![MATLAB/Simulink权威指南:开发环境、程序设计、系统仿真与案例实战](https://wfqqreader-1252317822.image.myqcloud.com/cover/629/27111629/b_27111629.jpg)
2.5 字符串
字符串是MATLAB语言的一个重要组成部分,MATLAB语言提供强大的字符串处理功能。本节主要介绍字符串的创建,字符串的操作和字符串的转换等内容。
2.5.1 字符串的创建
在MATLAB语言中,字符串一般以ASCII码形式存储,以行向量形式存在,并且每个字符占用两字节的内存。在MATLAB语言中,创建一个字符串可以用下面几种方法:
(1)直接将字符内容用单引号('')括起来,例如:
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P82_28802.jpg?sign=1739577400-zpmd1o8ns26kUuoxafUftTlpV9zTFDLh-0-35c9d590f97d01614df96a2e5fcddaf3)
字符串的存储空间如下所示,所定义的字符串有12个字符,每个字符占用两字节的内存。
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P82_28803.jpg?sign=1739577400-S249uDL3P3AjAKbKEQZ30kE8QCeyTnAW-0-1fcf49304419c05da8e9938cee6b25e4)
若要显示单引号(')字符,需要使用两个单引号,例如:
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P82_28804.jpg?sign=1739577400-JaROe6yTOlUwsNXVvlEDajHUkzzF9cun-0-bb84c624293162966357206e08fc0510)
(2)用方括号连接多个字符串组成一个长字符串,例如:
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P82_28805.jpg?sign=1739577400-ImyIy8JKEeGeCnX9jBNThuxNZpdgYvxi-0-3b44036f54280af1be6d10302c9a8aa3)
(3)用函数strcat把多个字符串水平连接合并成一个长字符串,strcat函数语法格式如下:
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P82_28806.jpg?sign=1739577400-XUu2r4PfmicpmIYOgSuLg5Vqk8ax07IS-0-e8bf57f582a47a8b52941ecb9d18bdfa)
例如:
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P82_28807.jpg?sign=1739577400-2JsaKkg9G6p2FyLWSqhwBPnI5uU1W1Id-0-4041213912aabc2972b094cbb6e7f41f)
(4)用函数strvcat把多个字符串连接成多行字符串,strvcat函数语法格式如下:
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P82_28808.jpg?sign=1739577400-ZC2H3XHf1bAWhaGYgi7cMk18JByUNBpn-0-13f7317be992569fb86866ff827261e9)
例如:
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P82_28809.jpg?sign=1739577400-Kx6UEm4IOPPUkcLZa115zXRRErgQ0rPB-0-41aa2c62a5735fd79b77c5bfbe7fc99f)
MATLAB语言可以用abs或者double函数获取字符串所对应的ASCII码数值矩阵。相反,可以用char函数把ASCII码转换为字符串。例如:
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P83_28811.jpg?sign=1739577400-BHo33EgTwee1yzJl4iS2VTNncHi2JD2h-0-33b800506b3ce81a43bb50380fecc94d)
【例2-5】 已知一个字符串向量str='It is a Green Bird',完成以下任务:
(1)计算字符串向量的字符个数;
(2)显示'a Green Bird';
(3)将字符串倒序重排;
(4)将字符串中的大写字母变成相应的小写字母,其余字符不变。
MATLAB程序代码如下:
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P83_28812.jpg?sign=1739577400-OX1oDAB5XVtHkUaMeaq4ch8PZZ0tZbTG-0-6bd159829ee27dd2c851d371d539bdc1)
程序运行结果如下:
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P83_28813.jpg?sign=1739577400-GYHTKyypunq26LYHBpBBVV4QyT6x3Aas-0-6b606bd87a6942bf78c843d22b5d14ad)
2.5.2 字符串的操作
1.字符串比较
MATLAB语言比较两个字符串是否相同的常用函数有strcmp、strncmp、strcmpi和strncmpi 4个,字符串比较函数的调用格式及功能说明如表2-2所示。
表2-2 字符串比较函数格式及功能
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-T84_28561.jpg?sign=1739577400-HZXnExeFWtKFXqu142xQn9vQqJ823YpI-0-eb029dda21d62e1f43829f9b45c33672)
例如:
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P84_28814.jpg?sign=1739577400-t6McHwqBsv92XRMszJJfw5E7d5LVlT9C-0-4027ba38def9eaad84539a06618ef663)
2.字符串查找和替换
MATLAB语言查找与替换字符串的常用函数有5个:strfind、findstr、strmatch、strtok和strrep。字符串查找函数的调用格式及功能说明如表2-3所示。
表2-3 字符串查找函数
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-T85_28562.jpg?sign=1739577400-FcanOVyUEp3MmxhMhd7j7gw1NIcoGMFu-0-c7d9d7253c9a4fd652500e2cb085f43f)
例如:
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P85_28815.jpg?sign=1739577400-12OXZjqNF169QQx8T0HurKRTYd96eaI2-0-3de8b750974bd9c82be445bf0211dce5)
3.字符串的其他操作
在MATLAB语言中,除了常用的字符串创建、比较、查找和替换操作外,还有许多其他字符串操作,如表2-4所示。
表2-4 字符串其他操作函数
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-T86_28563.jpg?sign=1739577400-D7xY1nDpJ2RM6bPDPz4H4f4p4nu7TTD3-0-a05e589f58feeb886aa5e9c456a13ab8)
例如:
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P87_28823.jpg?sign=1739577400-rA1QhAcc0zvpKLYjDAnJBH6aDPBYodXn-0-d933cc2a5f3e13515b8a35439266e818)
2.5.3 字符串转换
在MATLAB语言中,字符串进行算术运算会自动转换为数值型。MATLAB还提供了许多字符串与数值之间的转换函数,如表2-5所示。
表2-5 字符串与数值转换函数
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-T88_28564.jpg?sign=1739577400-vmeyjsm6UizT8EjnLowpe5qxXySObJb4-0-7db0baf4b19022b39b08a71a8791939b)
例如,可以利用字符串与数值之间的转换,对一串字符明文进行加密处理。MATLAB命令代码如下:
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P88_28818.jpg?sign=1739577400-VIKut8Y9ntivdxbxf5jJFisGZIy5XoDE-0-c5538364efd1f5945a3665c70d9ce38d)