赞
踩
讲解视频:可以在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函数结合一些额外的步骤来实现相同的功能。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。