【问题标题】:apply function to each column of a matrix (Vectorizing)将函数应用于矩阵的每一列(向量化)
【发布时间】:2015-04-21 15:32:47
【问题描述】:

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

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

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

有没有办法向量化这段代码?

【问题讨论】:

    标签: matlab matrix vectorization


    【解决方案1】:

    你说

    任何功能的概念都应该相同

    实际上并非如此。根据函数,调用它的代码可以向量化或不向量化。这取决于函数的内部编写方式。从函数外部,您无法将其向量化。矢量化是在函数内部完成的,而不是从外部完成的。

    如果函数向量化的,你只需用一个矩阵调用它,该函数就会作用于每一列。例如,sum 就是这样做的。

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

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

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

    所以pwelch矢量化函数。

    【讨论】:

    • 我错过了那个重要的时间。从错误的角度攻击问题。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2015-04-23
    • 2016-01-20
    • 2022-12-12
    • 1970-01-01
    • 2017-11-07
    • 1970-01-01
    • 2013-02-23
    • 1970-01-01
    相关资源
    最近更新 更多