当前位置:   article > 正文

第5章:5.4.5 字符串数组的综合练习(MATLAB入门课程)

第5章:5.4.5 字符串数组的综合练习(MATLAB入门课程)

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

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

案例1下表左侧给出了四名同学在三次测试中的成绩数据,请对所有同学的测试成绩进行排名,并生成一份详细的排名通知。排名通知是一个带有换行符的字符串标量,每一行包括学生的姓名、第几次测试、具体成绩以及在所有成绩中的排名,具体可参考下表右侧。

下面给出本题的代码:

案例2 本题选自数学建模国赛2021年B题《乙醇偶合制备 C4 烯烃》,题目中给了两个附件,其中附件1中给了一些催化剂组合,它以文本形式给出:

我们的任务就是从提供的催化剂组合中提取关键的数值指标

以“100mg 0.5wt%Co/SiO2- 50mg HAP-乙醇浓度2.1ml/min”这个组合为例,我们可以提取以下四个指标(括号中的是单位):

  1. Co和SiO2的质量:100(mg)
  2. Co负载量:0.5(wt%Co/SiO2
  3. HAP的质量:50(mg)
  4. 乙醇的注入速率:2.1(ml/min)

本题的数据我已经提前为大家准备好了,大家可以使用下面的代码加载数据(不会的同学可以参考本章5.3.3节或者观看讲解视频):load data_5_4_5.mat

导入成功后,工作区会出现下面的字符串数组s2(限于篇幅只准备了八行数据):

现在我们需要从s2的每一行中提取上述介绍的四个指标,并将提取的结果保存到一个8行4列的数值矩阵M中。

下面给出解决这个问题的思路:

首先观察每一行数据的结构,可以看出每一行要提取的指标由空格隔开,因此我们可以考虑使用split函数在空格处对每一行进行拆分,拆分后每一行变成了多个子字符串;

接下来我们需要从子字符串中提取每一个指标,例如第一行拆分后的第一个子字符串为“200mg”,我们需要提取出“200”,并将其转换为数值200;

最后,我们会把所有提取出来的数值指标整合到一个8行4列的矩阵M中,每行对应一个催化剂组合的四个指标,从而达成我们的分析目标。

根据上面的分析思路,我们可以写出相应的代码:

案例3 《西游记》是中国古典四大名著之一,共分为一百回。每一回不仅有独特的标题,还包含了丰富的故事内容。大家使用load data_5_4_5.mat命令加载数据时,可以在工作区看到s3这个字符向量,s3中包含8320个字符,里面包含了西游记一百回的内容梗概。限于篇幅,下面仅给大家列举s3中包含的前三回的内容:

本题的任务有两个:

  1. 提取每一回的标题,将结果保存到长度为100的字符串数组H中。例如H中第一个元素为"灵根育孕源流出 心性修持大道生",第二个元素为"悟彻菩提真妙理 断魔归本合元神"。
  2. 统计《西游记》章回内容梗概中每一回的字数,将结果保存到长度为100的数值向量N中。具体来说,需要统计的是每一回正文的字数,不包括标题和换行符,只对正文中的文字和标点符号进行字数统计。例如第一回正文的字数为73:仅包括以下内容:东胜神洲有一花果山,山项上一仙石孕育出一石猴。石猴在所居为“水帘洞”,被群猴拥戴为王。又过三五百年,根据一老猴指点,被菩提祖师收为徒,名曰孙悟空。 因此N(1)等于73;类似的,大家可以自己数一下第二回和第三回正文的字数,结果均为51,因此N(2)和N(3)等于51。

下面给出本题的代码:

案例4 《小王子》(The Little Prince)是法国作家安托万·德·圣-埃克苏佩里(Antoine de Saint-Exupery)于1942年创作的著名儿童文学短篇小说。

大家使用load data_5_4_5.mat命令加载数据时,可以在工作区看到s4这个字符向量,s4中有93181个字符,包含了《小王子》整本书的内容,书中开头的几段文字如下所示:

本题需要大家对《小王子》这本书进行词频分析,即计算书中每个单词出现的频次。

下面给出本题的代码:


  点击下方的CSDN专栏阅读下一篇文章:

MATLAB入门课程专栏

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/148510
推荐阅读
相关标签
  

闽ICP备14008679号