【发布时间】:2015-11-05 13:59:07
【问题描述】:
我有一个 480x640 大小的矩阵(比如说A)。我想要另一个相同大小的矩阵(B),其中B 中的每个元素都是A 中相应元素的exp()。
除了常规的 for 循环之外,还有一种优雅的方法吗?
【问题讨论】:
我有一个 480x640 大小的矩阵(比如说A)。我想要另一个相同大小的矩阵(B),其中B 中的每个元素都是A 中相应元素的exp()。
除了常规的 for 循环之外,还有一种优雅的方法吗?
【问题讨论】:
正如Shai's answer 所说,在良好的 MATLAB 实践环境中,几乎总是最好尝试利用 MATLAB 中内置的向量化运算。
但是,要回答明确的问题,请使用 arrayfun、cellfun 和 structfun 等函数。这些函数可以分别将函数应用于数组、元胞数组和结构的每个元素。这对于您想要做的事情没有内置或它不是矢量化操作的情况很有用。
例如,arrayfun:
A = [1, 2; 3, 4];
B = arrayfun(@(x) exp(x), A);
C = exp(A);
test = all(B(:) == C(:)) % Test for equivalence
而test 返回true。
【讨论】:
arrayfun 一起使用! arrayfun(@exp, A) 很好。
spfun。 @Will 试着想想如果你 spfun(@exp, S) vs exp(S) 会发生什么;)
【讨论】: