如何在不通过循环的方式下,对矩阵中的每一列应用函数?
我现在使用的函数是 pwelch
,但这个概念对于任何函数都是适用的。
目前,我的做法是通过循环来遍历矩阵中的每一列。
X = ones(5);
for i = 1:5 % length of the number of columns
result = somefunction(X(:,i))
end
有没有一种方法可以对这段代码进行向量化处理?
如何在不通过循环的方式下,对矩阵中的每一列应用函数?
我现在使用的函数是 pwelch
,但这个概念对于任何函数都是适用的。
目前,我的做法是通过循环来遍历矩阵中的每一列。
X = ones(5);
for i = 1:5 % length of the number of columns
result = somefunction(X(:,i))
end
您说
任何函数的概念都应该是相同的
实际上并不是这样。根据函数的不同,调用它的代码可以被向量化或者不被向量化。这取决于函数在内部是如何编写的。从函数的外部来看,您无法对其进行向量化处理。向量化是在函数内部完成的,而不是从外部完成的。
如果函数已经被向量化了,您只需使用矩阵调用它,函数就会针对每一列进行处理。例如,在sum
中就是这样做的。
至于pwelch
,您很幸运:根据文档 (强调添加),
Pxx = pwelch(X)
返回功率谱密度(PSD)估计值,Pxx
,...当
X
为矩阵时,PSD将被独立地计算每一列,并存储在Pxx
的相应列中。
所以pwelch
是一个向量化的函数。