1

我正在尝试在 Matlab 中进行简单的速度测试。我希望它从 1 到 20 将每个 a 分解为 3^a-2。可能是我在这里选择的数字太小而看不到任何显着差异,但我还是被卡住了。

我试着写

n = [1:20]
m = 3.^n-1
arrayfun(factor,m)

这给出了“输入参数不足”的错误。我虽然有道理,但显然不是。在看了一些arrayfun的例子和手册之后,我也试过了

arrayfun(@(m)factor(m), m)
arrayfun(@(m), factor(m), m)
arrayfun(@factor, m)

但没有一个工作。正确的方法是什么?而且,如果我进行这种速度测试,结果是否会被缓存,所以如果我再次进行测试,我将不得不使用不同的数字?

4

1 回答 1

1

用这个 :

l=arrayfun(@factor,m, 'UniformOutput', false);

要访问使用:

l{1}, l{2}...等

于 2013-09-28T11:55:49.387 回答