2013-09-28 45 views
1

我想在Matlab中做一個簡單的速度測試。我希望它爲每個a從1到20分配3^a-2。可能是因爲我在這裏選擇了太少的數字以查看任何顯着差異,但是我仍然卡住了。在matlab中Arrayfun問題

我試着寫

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

這給出了一個「沒有足夠的輸入參數」的錯誤。我雖然有道理,但顯然不是。看了一些arrayfun和手冊的例子,我也試過

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

但沒有工作。什麼是正確的方法來做到這一點?而且,如果我進行這種速度測試,結果將被緩存,所以如果我再次進行測試,我將不得不使用不同的數字?

回答

1

使用此:

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

要訪問使用:

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

+0

感謝。它是否會一次性計算所有因素,或者直到我編寫l {2}? – user1661303

+0

@ user1661303是的,它會一次計算所有因素,你可以通過最後省略分號檢查。這將顯示每個元素的單元格 – P0W

+0

好的,謝謝。還有一個問題。在寫作l(2)和l {2}的背景下有什麼不同?我注意到輸出是不同的。 – user1661303