Matlab:多个数组实现结构体排序

阅读: 评论:0

Matlab:多个数组实现结构体排序
我在Matlab中经常会遇到诸如此类的问题:
要对多个数组进⾏排序,但是这⼏个数组之间有很⼤的关联,排完序之后他们的相对顺序是不能变的,譬如说,原来数组A中的排序前的第1个元素排序后变成了第5个元素,那么我的数组B中的第1个元素也要变成第5个元素,也就是说,其他的数组的元素要根据某⼀个数组排序之后的结果⽽调整顺序。
在C,C++中,我⾸先想到的就是结构体数组啊,⾃定义Struct,然后调⽤⾃带的Sort函数,⾃⼰写⼀个Cmp函数,Oki了。在Matlab也可以这样做,但是也可以使⽤Matlab⾃带的sort函数,间接实现结构体排序。crj-200
包仁
假设我有4个数组分别代表学⽣的学号,成绩,年龄,性别,然后我要根据他们的成绩进⾏降序排序,代码如下:
%⾸先是⾃⼰编造数据
%原谅我使⽤骆驼式命名法(Camel-Case)
变形镁合金青龙偃月刀韩少功studentNumber = [11,24,43,21,34,25];
score = [28,42,21,45,32,43]; %⼀批假学⽣,满分150
age = [18,19,21,20,21,17];
gender = ['F','M','F','M','M','F'];
%调⽤sort函数
[score,index] = sort(score,'descend'); %descend代表降序
%输出
score
studentNumber = studentNumber(index)
age = age(index)
阿德勒
gender = gender(index)
%结果
score =
45    43    42    32    28    21
studentNumber =
21    25    24    34    11    43
age =
20    17    19    21    18    21
gender =
'MFMMFF'
这段代码恰如其分的满⾜了我们的要求,⾸先调⽤sort函数排序提供的数组(成绩),返回值包括已排好序的数组和排序后的数组中每⼀个元素在原来的旧数组的位置,如同⼀开始我们举的例⼦,数组A中的排序前的第1个元素排序后变成了第5个元素,那么index(5) = 1,新数组中的第5个元素是旧数组中的第⼀个元素。将成绩排好序之后,就是根据index将其他的数组(学号,年龄,性别)按照之前所排序数组(成绩)的顺序进⾏排列。
这是我的第⼀篇CSDN博客,如果有什么建议,请指出,⽽且如果您有更好的⽅法,欢迎指教!
大学生核心竞争力

本文发布于:2023-08-15 05:35:41,感谢您对本站的认可!

本文链接:https://patent.en369.cn/xueshu/361147.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数组   排序   成绩   元素   顺序
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 369专利查询检索平台 豫ICP备2021025688号-20 网站地图