Matlab中以下代码的输出是什么?

时间:2012-06-14 11:28:42

标签: matlab

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

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

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

a = [1 2 3;4 5 6;7 8 9;];
A = reshape(a,1,[]);
[B ,im]=sort(A,'descend');

B是排序的水平向量。 im是索引,以便all(A(im)==B)返回true

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

A = a(:)';

a(:)从任何数组中生成一个列向量,并将其转换为水平数组。 (如果它们很复杂,那么也会将a的元素结合起来,但是你的元素并不复杂,所以这里有效。)

我很惊讶你不是在寻找

B = sort(a,'descend'); 

,它提供3x3矩阵输出,每列按降序排序。