【问题标题】:Change order of rows in a matrix in MATLAB在 MATLAB 中更改矩阵中的行顺序
【发布时间】:2014-09-25 15:34:29
【问题描述】:

我需要转换一个矩阵:

X = [1 2; 3 4; 5 6; 7 8]
X = 1 2
    3 4
    5 6
    7 8

X = [1 2; 5 6; 3 4; 7 8]
X = 1 2
    5 6
    3 4
    7 8

并对具有任意行数的矩阵执行此操作。这样在一个有 200 行的矩阵中,第 101 行将成为第 2 行,第 102 行将成为第 4 行,依此类推。 如何在 MATLAB 中实现这一点?

【问题讨论】:

    标签: matlab matrix


    【解决方案1】:

    对于偶数行的数组,请执行以下操作:

    nRows = size(X,1);
    
    idx = [1:nRows/2;nRows/2+1:nRows];
    
    X_rearranged = X(idx(:),:);
    

    对于奇数行的数组,将nRows 加1,并使用idx(1:end-1) 而不是idx(:)

    【讨论】:

      【解决方案2】:

      你可以使用:

      X = [1 2; 3 4; 5 6; 7 8]
      Y = [a(1,:); a(3,:); a(2,:); a(4,:)]
      

      【讨论】:

      • 感谢您的回答,但您下次可能应该更彻底地阅读该问题。对于 OP 正在使用的示例,这在技术上是正确的,但他指定应该可以对数百行执行此操作。这种方法对于较大的情况非常不切实际。
      猜你喜欢
      • 2011-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-20
      • 2023-02-22
      • 1970-01-01
      • 2012-02-24
      相关资源
      最近更新 更多