我无法按照我想要的行排序3D矩阵,但仍然让其他两列与一个排序的行匹配。
排序前的ex):
5 4 1
4 6 3
9 6 5
排序后:
1 4 5
3 6 4
5 6 9
所以只有第一行按升序排序,其他两行只停留在各自的列中。
我尝试了排序(Matrix(1,:,:)),但这似乎排序了所有三行。我猜测有一些matlab函数可以做到这一点,但我还没有找到了什么。感谢
答案 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,:)