MATLAB练习题:元胞数组的练习——8名学生的信息数据分析

 讲解视频:可以在bilibili搜索“MATLAB教程新手入门篇——数学建模清风主讲”。

MATLAB教程新手入门篇(数学建模清风主讲,适合零基础同学观看)_哔哩哔哩_bilibili


问题1:随机生成8名学生,并将他们的信息储存在一个大小为8行3列的元胞数组S中。其中,S的第一列是他们的姓名,假设他们的姓名由4个随机英文字母生成,首字母大写;S的第二列是他们语数外三门科目的成绩,你可以使用长度为3的数值向量保存成绩,假设成绩是区间[0,100]上的随机整数;S的第三列是他们三门科目的总分。

问题2:假设我们想将S中低于60分的成绩全部改成60分,并重新计算总分,代码应该怎样写?

问题3:请在S中添加一列,用来表示学生的等级:总分超过240分时,等级为'A';总分位于200-239时,等级为'B';总分低于200时,等级为'C'。

问题4:进一步地,请从元胞数组S中筛选出等级为'A'的学生,并将结果保存到元胞数组SS中。

在上面这段代码中,我们开始时创建一个空的元胞数组SS,它被用来存储那些等级为'A'的学生的信息。接下来,我们通过for循环来遍历S中的每一行,即遍历每个学生的信息。在循环的每一次迭代中,我们使用strcmp函数检查学生的等级是否为'A'。如果是,就将该学生的完整信息添加到SS数组的末尾。值得注意的是,在向SS数组添加新行时,我们使用了end+1作为行索引。这种语法大家可能是首次见到,它是一个非常实用的方法来动态地增加数组的大小,使用end+1可以确保新数据总是被添加到数组的末尾。这种方法既简洁又有效,是扩展数组尺寸的常用技巧。在循环完成之后,SS数组就包含了所有等级为'A'的学生信息。这样的处理不仅提高了代码的可读性,也使得数据筛选过程更加直观和高效。

进一步思考:能否不使用循环语句来解决上面这个问题?下面我们来看另一种思路:

问题5:下面来看最后一个问题,请基于成绩总分对元胞数组SS中的学生信息进行降序排列。

当然,如果你忘了sortrows这个函数,你也可以使用sort函数结合一些额外的步骤来实现相同的功能。

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值