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

 我来答
dukinkin
2018-03-26 · TA获得超过1.3万个赞
知道大有可为答主
回答量:2444
采纳率:90%
帮助的人:955万
展开全部
在matlab中常用sort函数对数列进行排序
[B,I] = sort(A)

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

这时候只要再对I排序一次
[C,II]=sort(I)
得到的II就是原数列的各个元素在排序后的数列的位置,也就是A=B(II);
tybtch
2013-03-25 · TA获得超过934个赞
知道小有建树答主
回答量:495
采纳率:100%
帮助的人:154万
展开全部
如果你用的是sortrows函数,那么可以这样写:[Y,I]=sortrows(A);
其中Y是排序后的数列,I是排序后元素在原来的数列中的位置。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hqxz556
2018-03-28 · TA获得超过2831个赞
知道大有可为答主
回答量:1686
采纳率:93%
帮助的人:586万
展开全部

假如你要排序的数组是 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 了。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
CJJohn
2018-03-28 · Persistence is harder than eff...
CJJohn
采纳数:475 获赞数:1362

向TA提问 私信TA
展开全部
用sort函数排序的话,[sX,index] = sort(X) ,排序后,sX是排序好的向量,index是 向量sX中对X 的索引。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式