仅通过第一行MATLAB对3D矩阵进行排序

时间:2015-04-09 00:08:06

标签: matlab sorting matrix

我无法按照我想要的行排序3D矩阵,但仍然让其他两列与一个排序的行匹配。

排序前的

ex):

    5 4 1 
    4 6 3
    9 6 5
排序后

    1 4 5
    3 6 4
    5 6 9

所以只有第一行按升序排序,其他两行只停留在各自的列中。

我尝试了排序(Matrix(1,:,:)),但这似乎排序了所有三行。我猜测有一些matlab函数可以做到这一点,但我还没有找到了什么。感谢

2 个答案:

答案 0 :(得分:2)

您可以使用带sort的输出参数来根据需要对索引进行重新排序。

示例:

clear
clc

a = [5     4     1
     4     6     3
     9     6     5]

 %// Select row of interest
 row = 1;

 [values,indices] = sort(a(row,:)) %// Since you have a 3D matrix use "a(row,:,:)"

 b = a(:,indices) %// In 3D use "b = a(:,indices,:)"

输出:

b =

     1     4     5
     3     6     4
     5     6     9

答案 1 :(得分:1)

使用sortrows

的另一种方法
%// Input
a = [5     4     1
     4     6     3
     9     6     5]

%// code
sortrows(A.').'           %// for 2D

%// Results:
 1     4     5
 3     6     4
 5     6     9
------------------------------------------------
[t,ind] = sortrows(A(:,:,1).')    %// for 3D
A(:,ind,:)