【问题标题】:Matlab: How to insert zeros in specific places of vectorMatlab:如何在向量的特定位置插入零
【发布时间】:2013-10-29 14:00:02
【问题描述】:

有人可以帮我解决 Matlab 中的以下问题吗?我有一个包含元素值的第一个向量。例如,

[2 8 4 9 3]. 

第二个向量中包含所需位置的第二个向量。例如,

[0 0 1 0 0 0 0 1 1 0 0 1 0 0 1]. 

现在我想将第一个向量的值放在第二个向量的位置上,以结束

[0 0 2 0 0 0 0 8 4 0 0 9 0 0 3]. 

当向量的大小可能非常大时,最有效的方法是什么。 (然后是数千个元素)?

【问题讨论】:

    标签: matlab vector insert


    【解决方案1】:

    您可以将 y 值视为逻辑指标,然后使用逻辑索引将这些值设置为 x 中的值。

    x = [2 8 4 9 3];
    y =  [0 0 1 0 0 0 0 1 1 0 0 1 0 0 1];
    y(logical(y)) = x;
    

    或者,您可以使用

    y(y==1) = x;
    

    【讨论】:

      【解决方案2】:

      使用自索引:

      % Your values:
      V = [2 8 4 9 3];
      
      % The desired locations of these values:
      inds = [0 0 1 0 0 0 0 1 1 0 0 1 0 0 1];
      
      % index the indices and assign
      inds(inds>0) = V
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多