【问题标题】:How to decrement only non-zero elements of a matrix without using a loop?如何在不使用循环的情况下仅递减矩阵的非零元素?
【发布时间】: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

但我正在寻找一个班轮。

【问题讨论】:

    标签: matlab matrix


    【解决方案1】:

    找到非零元素,减去 1 并在它们的索引处替换它们

    NAV(NAV~=0) = NAV(NAV~=0)-1;
    

    顺便说一句,您的代码没有按照您的要求执行。您的代码减少了积极的元素;不是非零元素。

    你的循环的矢量化版本是:

    NAV(NAV>0) = NAV(NAV>0)-1;
    

    【讨论】:

      猜你喜欢
      • 2020-01-18
      • 1970-01-01
      • 1970-01-01
      • 2020-05-12
      • 1970-01-01
      • 1970-01-01
      • 2015-05-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多