2015-11-05 1283 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

相关问题