在matlab,对一个数列排序后,怎样得到原数列的各个元素在排序后的数列的位置?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在matlab,对一个数列排序后,怎样得到原数列的各个元素在排序后的数列的位置?相关的知识,希望对你有一定的参考价值。

在matlab中常用sort函数对数列进行排序
[B,I] = sort(A)

这样得到的B序列就是A序列中元素从小到大排列的序列
而sort函数不单只能返回一个序列B,还能返回第二个参数I
这里I就是排序后数列各元素在原序列中的位置,也就是B=A(I);

这时候只要再对I排序一次
[C,II]=sort(I)
得到的II就是原数列的各个元素在排序后的数列的位置,也就是A=B(II);
参考技术A 如果你用的是sortrows函数,那么可以这样写:[Y,I]=sortrows(A);
其中Y是排序后的数列,I是排序后元素在原来的数列中的位置。本回答被提问者采纳
参考技术B

假如你要排序的数组是 A,那么:

[B,I] = sort(A)

返回的 B 是排序后的数组,I 是对应元素原来在 A 中的位置。

比如:

A = [79, 39, 25, 41, 10];
[B, I] = sort(A)
% >>>
% B =
%     10    25    39    41    79
% I =
%      5     3     2     4     1

观察 I,第一个元素是 5。这就表示,原来的第 5 个元素,排序后在第 1 的位置。

这个元素的值是 10,即是 B(1)。如果你只关心 I 对排序后的数组不感兴趣,也可写成:

[~,I] = sort(A)

这样就只返回 I,不返回 B 了。

参考技术C 用sort函数排序的话,[sX,index] = sort(X) ,排序后,sX是排序好的向量,index是 向量sX中对X 的索引。

以上是关于在matlab,对一个数列排序后,怎样得到原数列的各个元素在排序后的数列的位置?的主要内容,如果未能解决你的问题,请参考以下文章

php常用的排序算法与二分法查找

直接插入排序

weight (搜索对象的选取)

《挑战程序设计竞赛》课后练习题解集——3.2 常用技巧精选

数列排序

(转)使用K-S检验一个数列是否服从正态分布两个数列是否服从相同的分布