什么是在矩阵的每列上应用函数而不循环的最快方法?
我使用的函数是pwelch
,但任何函数的概念都应该相同。
目前我正在循环我的矩阵。
X = ones(5);
for i = 1:5 % length of the number of columns
result = somefunction(X(:,i))
end
有没有办法对这段代码进行矢量化?
答案 0 :(得分:3)
你说
任何函数
的概念都应该相同
实际情况并非如此。根据功能,调用它的代码可以进行矢量化或不进行矢量化。这取决于函数在内部的编写方式。从函数外部,你无法做任何事情来使它矢量化。矢量化在函数中完成,而不是从外部完成。
如果函数是矢量化,你只需用矩阵调用它,该函数就可以在每一列上运行。例如,这就是sum
的作用。
在pwelch
的情况下,你很幸运:根据documentation(强调添加),
Pxx = pwelch(X)
返回功率谱密度(PSD)估算值Pxx
,...当
X
是矩阵时,PSD就是 为每列独立计算并存储在相应的列中Pxx
的列。
所以pwelch
是一个矢量化函数。