2015-11-05 145 views

回答

6

expvectorized操作:

B = exp(A); 

它不會去比這更優雅;)

注意,在Matlab的大部分操作是默認矢量因此你不需要明確遍歷矩陣的所有元素。

2

在良好的MATLAB實踐環境中,嘗試利用內置於MATLAB中的矢量化操作幾乎總是最好的,正如Shai's answer所說的那樣。

但是,要回答明確的問題,功能如arrayfun,cellfunstructfun。這些函數可以分別對數組,單元陣列和結構的每個元素應用函數。這對於你想要執行的操作沒有內置的情況或者它不是矢量化操作的情況很有用。

例如,arrayfun

A = [1, 2; 3, 4]; 
B = arrayfun(@(x) exp(x), A); 
C = exp(A); 

test = all(B(:) == C(:)) % Test for equivalence 

而且test回報true

+2

爲了避免混淆,值得一提的是,你不能*使用'arrayfun'使用匿名函數! 'arrayfun(@exp,A)'很好。 – Will

+0

你忘了'spfun'。 @試着想,如果你使用spfun(@exp,S)''exp(S)';)會發生什麼; – Shai

相關問題