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

在MATLAB中如何将函数应用于矩阵?,matlab,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 您所展示的所有操作实际上都已经对矩阵进行了操作(按元素),除了

我想对矩阵的每个元素应用一个函数。我用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

您所展示的所有操作实际上都已经对矩阵进行了操作(按元素),除了
*
是矩阵乘法,您希望
*
执行该乘法


您所展示的所有操作实际上都已经对矩阵进行了操作(按元素),除了
*
是矩阵乘法,您希望
*
执行该乘法


@砖块否,它是
W
0
中每个值之间的元素最大值。要获得行或列的最大值,需要
max(data,[],dim)
@Brick否,它是
W
0
中每个值之间的元素最大值。要获得最大行数或列数,需要
max(data,[],dim)
我强烈建议您阅读Stackoverflow文档中的主题。我强烈建议您阅读Stackoverflow文档中的主题。
W = sign(W) .* max(abs(W) - lambda, 0);