在Matlab中将函数应用于矩阵的每个元素

时间:2015-11-05 13:59:07

标签: matlab matrix

我有一个480x640大小的矩阵(让我们说A)。我想要另一个大小相同的矩阵(B),B中的每个元素都是exp()中相应元素的A
除了常规的循环之外,还有一种优雅的方式吗?

2 个答案:

答案 0 :(得分:6)

expvectorized操作:

B = exp(A);

它没有比这更优雅;)

请注意,默认情况下,Matlab中的大多数操作都是矢量化的,因此您无需显式循环遍历矩阵的所有元素。

答案 1 :(得分:2)

在良好的MATLAB实践环境中,尝试利用内置于MATLAB中的矢量化操作几乎总是最好的,正如Shai's answer所说的那样。

但是,要回答明确的问题,可以使用arrayfuncellfunstructfun等功能。这些函数可以分别将函数应用于数组,单元数组和结构的每个元素。这对于没有内置功能或者不是矢量化操作的情况很有用。

例如,使用arrayfun

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

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

test会返回true

相关问题