【发布时间】:2018-06-17 03:31:13
【问题描述】:
有没有一种简单的方法可以在不使用循环的情况下仅递减矩阵的非零元素?这是我使用循环的方法:
NAV = [5 0 8 4 3 0 0];
for i = 1:length(NAV)
if NAV(i)> 0
NAV(i) = NAV(i)-1;
end
end
但我正在寻找一个班轮。
【问题讨论】:
有没有一种简单的方法可以在不使用循环的情况下仅递减矩阵的非零元素?这是我使用循环的方法:
NAV = [5 0 8 4 3 0 0];
for i = 1:length(NAV)
if NAV(i)> 0
NAV(i) = NAV(i)-1;
end
end
但我正在寻找一个班轮。
【问题讨论】:
找到非零元素,减去 1 并在它们的索引处替换它们
NAV(NAV~=0) = NAV(NAV~=0)-1;
顺便说一句,您的代码没有按照您的要求执行。您的代码减少了积极的元素;不是非零元素。
你的循环的矢量化版本是:
NAV(NAV>0) = NAV(NAV>0)-1;
【讨论】: