如何在MATLAB中将函数应用于矩阵?

use*_*363 1 matlab

我想将函数应用于矩阵的每个元素.我用for循环做.但由于速度对我来说至关重要,我想知道是否有人可以通过删除for循环来帮助我更快地完成它?

这是我的代码:

Nrow=size(W,1);
Ncol=size(W,2);

for R=1:Nrow
    for C=1:Ncol
        W(R,C)=(sign(W(R,C))) * (max((abs(W(R,C))- lambda),0));
    end
end
Run Code Online (Sandbox Code Playgroud)

Sue*_*ver 5

您实际显示的所有操作都已经在矩阵上运行(逐个元素),但*矩阵乘法除外,您需要.*执行逐元素乘法.

W = sign(W) .* max(abs(W) - lambda, 0);
Run Code Online (Sandbox Code Playgroud)

  • @Brick不,它是"W"和"0"中每个值之间的元素最大值.要获得最大的行或列,将要求`max(data,[],dim)` (2认同)