【问题标题】:MATLAB replacing some elements from a vectorMATLAB 替换向量中的一些元素
【发布时间】:2016-05-06 23:24:01
【问题描述】:

如果我有一个向量,假设 L=[10;10;10;11;11;13;13] 与另一个向量 X=[1;6;65;34;21;73;14 ] 我想创建第三个向量 Z,其中几乎包含 X 中的所有元素,但是当 L 中的元素 (i,j) 发生变化时,只需替换 X 中的 0。假设我想要的结果应该是这样 Z=[1;6;65;0;21;0;14]

有什么办法解决这个问题吗?

我真的很感激:)

【问题讨论】:

    标签: matlab if-statement vector


    【解决方案1】:

    这很简单:

    X = [1;6;65;34;21;73;14];
    L = [10;10;10;11;11;13;13];
    Z = X;
    ind = [false; diff(L)~=0]; %// logical index of values to be set to 0
    Z(ind) = 0;
    

    这通过计算发生更改的元素的logical indexind = [false; diff(L)~=0] 来工作。最初的false 是必需的,因为第一个元素没有前一个元素可以比较。逻辑索引用于选择应将Z 的哪些值设置为0

    【讨论】:

      【解决方案2】:

      这应该可以工作

      Z = zeros(length(L))
      
      for i = 2:length(L)
          if(L(i-1) == L(i)
              Z(i) = X(i);
          else
              Z(i) = 0;
          end
      end
      

      【讨论】:

        猜你喜欢
        • 2017-02-27
        • 1970-01-01
        • 1970-01-01
        • 2020-02-02
        • 2018-07-23
        • 2016-08-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多