我有一个480x640大小的矩阵(让我们说A
)。我想要另一个大小相同的矩阵(B
),B
中的每个元素都是exp()
中相应元素的A
。
除了常规的循环之外,还有一种优雅的方式吗?
答案 0 :(得分:6)
答案 1 :(得分:2)
在良好的MATLAB实践环境中,尝试利用内置于MATLAB中的矢量化操作几乎总是最好的,正如Shai's answer所说的那样。
但是,要回答明确的问题,可以使用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
。