【问题标题】:deleting repeated elements from matrix matlab [closed]从矩阵matlab中删除重复元素[关闭]
【发布时间】:2013-12-28 21:58:27
【问题描述】:

我在使用 matlab 时遇到了一些问题。我正在尝试创建一个 2x5000(时间和位置)的新矩阵,并且我需要删除与以前的某个地方具有相同时间值的单元格。

第二件事:我有两个向量,我需要创建一个新向量,其中我有来自第一个向量的第一个元素,第二个来自第二个向量,依此类推(第三个来自第一个,第四个来自第二个) .

如何做到这一点?

【问题讨论】:

    标签: matlab matrix


    【解决方案1】:

    第一个问题:使用unique的第二个输出参数,它返回非重复元素的索引。

    第二个问题:

    %example data
    A=[1,2,3,4]
    B=[5,6,7,8]
    %connect to a matrix
    C=([A;B])
    %convert to a vector
    C=C(:)
    

    【讨论】:

      【解决方案2】:

      脚本:

      close all; clear all;
      
      v1 = [1 2 3 4 5; 0.1 0.2 0.3 0.4 0.5];
      v2 = [1 2 3 4 5; 0.15 0.25 0.35 0.45 0.55];
      
      % merge
      v12 = zeros(size(v1, 1), size(v1, 2) + size(v2, 2));
      v12(:, 1:2:end) = v1;
      v12(:, 2:2:end) = v2;
      v12
      
      % unique
      i = 1;
      while i < size(v12, 2)
        items = find(v12(1, i) == v12(1,:));
        if length(items) > 1
          items = items(2:end);
          v12(:, items) = [];
        end
        i = i + 1;
      end
      v12
      

      输出:

      v12 =
      
         1.00000   1.00000   2.00000   2.00000   3.00000   3.00000   4.00000   4.00000   5.00000   5.00000
         0.10000   0.15000   0.20000   0.25000   0.30000   0.35000   0.40000   0.45000   0.50000   0.55000
      
      v12 =
      
         1.00000   2.00000   3.00000   4.00000   5.00000
         0.10000   0.20000   0.30000   0.40000   0.50000
      

      【讨论】:

      • ` i++` 不是有效的 Matlab 语法。
      • 谢谢。我在它之前添加了“i=i+1”而不是“i++”和“else”,它可以工作。
      • 我使用 Octave 而不是 Matlab。 i 增量应该在 if 语句之外 - 我的错误。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-21
      • 2012-02-13
      相关资源
      最近更新 更多