我想将函数应用于矩阵的每个元素。我用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
答案 0 :(得分:5)
您实际显示的所有操作已经已经在矩阵上运行(元素方式),但*
是矩阵乘法的例外情况除外希望.*
改为执行element-wise multiplication。
W = sign(W) .* max(abs(W) - lambda, 0);