1
a = [1 2 3;4 5 6;7 8 9;];

[~ ,im]=sort(reshape(a,1,[])'descend');

那么实际上我得到的是什么作为输出,它不是一个排序数组?

4

2 回答 2

1

阅读文档;的第二个输出参数sort是索引数组,而不是值数组。

于 2012-06-14T11:35:30.960 回答
1
a = [1 2 3;4 5 6;7 8 9;];
A = reshape(a,1,[]);
[B ,im]=sort(A,'descend');

B是排序后的水平向量。 imall(A(im)==B)返回的索引true

您并不特别需要 reshape 命令,或者更确切地说,获得相同结果的另一种方法是

A = a(:)';

a(:) 从任何数组中生成一个列向量,并将其转置为水平数组。(' 如果 a 的元素很复杂,它们也将复共轭,但你的元素并不复杂,所以这在这里有效。)

我有点惊讶你不是在寻找

B = sort(a,'descend'); 

它给出了一个 3x3 矩阵输出,每列按降序排序。

于 2012-06-15T01:39:32.247 回答