matlab中给一维向量排序是使用sort函数:sort(A),排序是按升序进行的,其中A为待排序的向量;若欲保留排列前的索引,则可用 [sA,index] = sort(A) ,排序后,sA是排序好的向量,index 是 向量sA 中对 A 的索引。 索引使排列逆运算成为可能。
有久没有用Matlab都忘了。。。。。
事实上,这里A ≡sA(index) , [A恒等于sA(index)],这个结论确实很奇妙,而且很有用。不信你排序之后试下键入命令sA(index) ,看看得到的是不是就是排列前的A呢。[因为鸿1018问到这个问题,特此补写这一段] 2008-10-20 13:18 +
对于一般矩阵An*m(n,m均大于等于2),只要修正一下index的值,结论sA(index) ≡ A仍然成立,修正代码如下:
s=size(A);
for k=1:s(2)
index(:,k)=index(:,k)+(k-1)*s(1);
end