如何将函数用作另一个函数的参数?

时间:2015-09-17 02:45:58

标签: matlab

我试图制作两个m文件。 一个是插入排序,另一个是检查运行时间。

我的第一个m文件是'Insertion_sort.m'。

function result = check_running_time(func)

for i = 0 : 1000 : 500000
    data = floor(rand(1, i) * 10000);
    elapsed = Insertion_sort(data)
    fprintf('%6d: %3.4f\n', i, elapsed);
end

end

我的第二个m文件是'check_running_time.m'。

check_running_time(Insertion_sort);

我尝试在命令窗口中输入以下内容。

0: 0.0001
1000: 0.0002
2000: 0.0003
...
100000: 1.0000

如您所知,我希望结果如下

tr

我正在使用MATLAB R2013a版本。 请帮帮我TT ... Matlab和C一样好,但对我来说它并不习惯。

2 个答案:

答案 0 :(得分:2)

您可以使用函数句柄而不是feval,而是使用Function Handles

function result = check_running_time(func)
for i = 0 : 1000 : 500000
    data = floor(rand(1, i) * 10000);
    elapsed = func(data);
    fprintf('%6d: %3.4f\n', i, elapsed);
end

调用它
check_running_time(@Insertion_sort)

注意@,它用于创建函数句柄。它实际上是一样的,但我认为语法更好。

答案 1 :(得分:0)

您可以使用feval

function result = check_running_time(func)
for i = 0 : 1000 : 500000
    data = floor(rand(1, i) * 10000);
    elapsed = feval(func, data)
    fprintf('%6d: %3.4f\n', i, elapsed);
end
end

在这种情况下,您必须在命令窗口中将其称为:

check_running_time('Insertion_sort')