【问题标题】:How to sort specific set of rows with specific column?如何对具有特定列的特定行集进行排序?
【发布时间】:2023-03-12 04:50:01
【问题描述】:

在 Matlab 中,我想对矩阵 A 的前 3 行与第 2 列进行排序,然后对接下来的 3 行进行排序,而不用第 2 列再次更改前三行。 例如因为矩阵在下面

A = [1 6 50;
     5 2 50;
     7 1 50;
     2 5 53;
     5 1 53;
     7 3 53]

我想得到

B = [7 1 50;
     5 2 50;
     1 6 50;
     5 1 53;
     7 3 53;
     2 5 53;]

稍后,用同样的逻辑,我想对一个有 100 行的矩阵进行排序。

【问题讨论】:

  • 你的代码在哪里,你试过什么?

标签: matlab sorting


【解决方案1】:

您可以通过将sortrows 方法与子矩阵运算相结合来做到这一点:

A(1:3,:) = sortrows(A(1:3,:), 2)
A(4:6,:) = sortrows(A(4:6,:), 2)
...

如果你的矩阵比较大,你可以用一个简单的for循环来做:

for i = 1:3:100
    A(i:i+2,:) = sortrows(A(i:i+2,:), 2)
end

【讨论】:

  • 感谢托比亚斯的回答。我从另一个论坛收到了这个问题的另一个答案。对于 k = 1:3:size(A, 1) [dummy, index] = sort(A(k:k+2, 2)); A(k:k+2, :) = A(索引 + k - 1, :);结束
  • 看起来这种方法应该也可以,但我认为sortrows 方法可能更具可读性;)
猜你喜欢
  • 2017-11-28
  • 1970-01-01
  • 2013-07-03
  • 1970-01-01
  • 2020-03-08
  • 1970-01-01
  • 2017-12-14
  • 1970-01-01
  • 2020-01-21
相关资源
最近更新 更多