在Matlab中对三维矩阵的每一行元素进行排序



我想在Matlab中对三维矩阵A的每一行元素进行排序。这个矩阵的维数是(m)x(n)x(g)。设置g = 3。顺序应该按升序进行,首先wr到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];

您可以将sortrows应用于A的每个水平切片上方看到(因此第三维度成为" sort rows "中的"行"):

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

相关内容

  • 没有找到相关文章

最新更新