【问题标题】:Sort elements in each row of a 3-d matrix in Matlab在 Matlab 中对 3-d 矩阵的每一行中的元素进行排序
【发布时间】:2015-09-11 09:47:15
【问题描述】:

我想在 Matlab 中对 3-d 矩阵A 的每一行中的元素进行排序。该矩阵的维度为(m)x(n)x(g)g 设置为等于3。顺序应按升序排列,首先写到A(:,:,1),然后写到A(:,:,2),最后写到A(:,:,3)

例如:

A(:,:,1)=[3 1 1; 4 5 6; 0 0 0; 1 1 1];
A(:,:,2)=[3 3 4; 1 4 0; 0 1 0; 2 1 7];
A(:,:,3)=[6 7 9; 6 6 0; 6 5 0; 0 0 0];

%Step 1: Order wrto A(:,:,1)
A(:,:,1)=[1 1 3; 4 5 6; 0 0 0; 1 1 1];
A(:,:,2)=[3 4 3; 1 4 0; 0 1 0; 2 1 7];
A(:,:,3)=[7 9 6; 6 6 0; 6 5 0; 0 0 0];

%Step 2: Within the order in Step 1, order wrto A(:,:,2)
A(:,:,1)=[1 1 3; 4 5 6; 0 0 0; 1 1 1];
A(:,:,2)=[3 4 3; 1 4 0; 0 0 1; 1 2 7];
A(:,:,3)=[7 9 6; 6 6 0; 6 0 5; 0 0 0];

%Step 3: Within the order in Step 1 and 2, order wrto A(:,:,3)
A(:,:,1)=[1 1 3; 4 5 6; 0 0 0; 1 1 1];
A(:,:,2)=[3 4 3; 1 4 0; 0 0 1; 1 2 7];
A(:,:,3)=[7 9 6; 6 6 0; 0 6 5; 0 0 0];

【问题讨论】:

  • 对于排序操作,m和n有什么规范吗?或者您只是独立于 m 和 n 对第 3 维进行排序?
  • 我不确定我明白你的意思。在 abive 的示例中,m=4,n=3。 g 始终设置为 3。

标签: arrays matlab sorting multidimensional-array


【解决方案1】:

您可以将sortrows 应用于A 的每个水平切片从上方看(这样第三维就变成了“@987654324”中的“行” @rows"):

B = NaN(size(A));
for n = 1:size(A,1),
    B(n,:,:) = sortrows(squeeze(A(n,:,:)));
end

【讨论】:

  • 很难弄清楚 OP 是如何达到预期的 o/p 的,这绝对是伟大的心理技能;)
  • 谢谢,@Divakar!这确实不是最明确的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-17
  • 2017-10-10
相关资源
最近更新 更多