将函数应用于矩阵的每一列(向量化)

时间:2015-04-21 15:32:48

标签: matlab matrix vectorization

什么是在矩阵的每列上应用函数而不循环的最快方法?

我使用的函数是pwelch,但任何函数的概念都应该相同。 目前我正在循环我的矩阵。

 X = ones(5);
    for i = 1:5 % length of the number of columns
    result = somefunction(X(:,i))
    end

有没有办法对这段代码进行矢量化?

1 个答案:

答案 0 :(得分:3)

你说

  

任何函数

的概念都应该相同

实际情况并非如此。根据功能,调用它的代码可以进行矢量化或不进行矢量化。这取决于函数在内部的编写方式。从函数外部,你无法做任何事情来使它矢量化。矢量化在函数中完成,而不是从外部完成。

如果函数矢量化,你只需用矩阵调用它,该函数就可以在每一列上运行。例如,这就是sum的作用。

pwelch的情况下,你很幸运:根据documentation(强调添加),

  

Pxx = pwelch(X)返回功率谱密度(PSD)估算值Pxx,...

     

X是矩阵时,PSD就是       为每列独立计算并存储在相应的列中       Pxx 的列。

所以pwelch 是一个矢量化函数。