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