![MATLAB 8.5基础教程](https://wfqqreader-1252317822.image.myqcloud.com/cover/310/31304310/b_31304310.jpg)
3.1 字符串数组
字符串是指1×n的字符数组,也可以是多行多列的字符串数组。MATLAB提供了多种字符串操作,包括字符串的创建、查找及与数值之间的转换等。
3.1.1 串数组的生成
字符串是存储在一个行向量中的文本,行向量中的每一个元素代表一个字符。在MATLAB中创建字符串的方法具体如下。
1.直接输入法
直接用单引号输入,例如在命令行窗口输入:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-1.jpg?sign=1739412067-r4mQ6957dWxqMWbOFgEgX5dMeMOyXmEn-0-17c691182609a43fd87a4e88507da19b)
运行结果如下:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-2.jpg?sign=1739412067-13URHFEDhZFjGuqkDBWKtou7OAfKQWRG-0-770df7a1cccc30ac189b23f266561bd2)
字符串内可包含字母、数字、特殊字符以及中文字等内容。若在单引号外加大括号{}也可以显示字符串,例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-3.jpg?sign=1739412067-wFskpxo3ltXus0aODw7HDzHkgyQlpdSz-0-b949e252effd3ed8b53933eb89371416)
从结果来看,显示的内容有单引号标示,而单引号法显示的却只是文本。
2.利用命令disp法
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-4.jpg?sign=1739412067-rk5mNzO10KOziaLew9AKG5XppMvL5RmQ-0-746601508fbb3ccca4a40f9cbaacab56)
例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-5.jpg?sign=1739412067-MFo7Nilnct8NCKSq7QizMuZxRrqoi0c4-0-55ef3ea868be94f04494e417255e695f)
运行结果如下:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-6.jpg?sign=1739412067-8epcvn9dHofq7EO5bmsmphJugekqxWHX-0-3d707036b1437ea3dfdcb3ac5496bbe2)
3.利用命令char法
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-7.jpg?sign=1739412067-MrbnDsO9mMjLLPPbAIwtNe2AOASHdRLP-0-9a80909fc2034d7fea9a04083e6da5c4)
例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-8.jpg?sign=1739412067-WTDbIzriMBIqqVSjfaMrg02fkTrMleS3-0-6e24f50d9c4d1dd9e1c40a20eef0b9eb)
4.利用命令input法
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-9.jpg?sign=1739412067-Yz2MjEoCVamrkuDP8QKSKdPs8MdQRoU3-0-47ae2ed03e28f0811d737fb9c466f839)
如果变量in是's',则输入的内容以字符串的形式进行保存。
例如,在命令行窗口中输入:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-10.jpg?sign=1739412067-1rQ0xdzXZjehYGbyZRwBpSp24TJdGdt5-0-cde7d09a94111b337319c98bfdcb0897)
运行结果如下:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-11.jpg?sign=1739412067-Qy3hgvsuM9goY4t0WYGplWzOQiKVnTRG-0-33822a8dc9965a0a6645e0b9ca6d2649)
然后在“x:”的后面输入一个数6,按<Enter>键即得:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-12.jpg?sign=1739412067-mtMKlrrxhaSB1N1BDx9h6tyAauxQqyxI-0-783ceca57628cd0cf3987157ce563798)
此时数值6以变量x的形式显示在工作区Workspace内。若执行如下命令:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-13.jpg?sign=1739412067-S4D4h75unACmvTcR3CT612Z7mvqGFAqg-0-b138042829d3bff100d4b35904f128dd)
此时数字6以字符串的形式保存在工作区Workspace内。
5.在字符串中用两个单引号来表示一个单引号
例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-14.jpg?sign=1739412067-cwGXGt5xf7AKBjwGeBt5yVKcHVlAJO8s-0-cf6d616e163f38041e0eb9fadf3c4fdb)
3.1.2 串数组的访问和大小
1.串数组的访问
字符串的存储是将其中字符按顺序单一存放的,且存放的是字符的ASCII码。当在屏幕上显示字符变量的值时,显示出来的是文本,而不是ASCII数值。由于字符串是以向量的形式来存储的,所以可以通过它的下标对字符串中的任何一个元素进行访问。
例如,对上面定义的字符串Book,输入命令:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-15.jpg?sign=1739412067-SnPnPpgBUDvLNuEzHs0dB1qdasIZfwCa-0-b8ad6d38caa145069b6e109ca9aaf4e3)
2.字符串的长度
字符串的长度可用length()和size()函数来确定,例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-16.jpg?sign=1739412067-EJHmbLUboVgYxJ0hdtN2nh9uY7t6Cs0R-0-c3215ccc26e7533b834d6fa49e709d1d)
3.字符串的查找
在字符串中寻找某个字符串,可用函数findstr()来实现。
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-17.jpg?sign=1739412067-cfO6UWMIZNWBnxINfwjNZleLI6koL4YN-0-747bf0b8a493aeabb42c10a2a3f56b8d)
例如,在上面定义的字符串Book中查找A所在的位置:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-18.jpg?sign=1739412067-augqvb3HhonlvDMqQCYdtfUyC0LBhV12-0-2f06d71a93587cafcf6f64f5f562205e)
注:字符串和要查找的字符串的位置可以互换,且其结果相同。因此,S1、S2哪个在前都可。
3.1.3 多行串数组的创建
1.多行串数组的直接输入
字符串数组可以是多行多列的数组,但必须保证每一行都有相同的列数。若字符串长度不一样,需要用空格填充,保证所有行的长度都相同。例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-19.jpg?sign=1739412067-lV1qhJ6cgOFf6syjJyrA9XgtjhdJrqt7-0-c835f65712516497a17627d2843cbfee)
2.利用串操作函数创建多行串数组
利用函数char()、strvcat()创建多行串数组,每行的字符串长度可以不同。例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-20.jpg?sign=1739412067-eKgXbSJqIBs6l5518aItEBwohP0jU2EY-0-a1c33a10cf53cdd6ecffc47107cad9a9)
3.1.4 字符串数组的转换
1.字符串转换成矩阵
将字符串转换成矩阵的函数为str2mat()。例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-22.jpg?sign=1739412067-p5DzOxf28mKQvBh5YGv2lvtRInSSwFDX-0-a6a8511da25b21cf5dfb6e277b757c7f)
2.字符串与数值的转换
利用str2num()和num2str()实现字符串与数值的相互转换。例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-23.jpg?sign=1739412067-dLgMYK8hyiaBdOIBiThIJg1NdVuai21i-0-15e66699dcbcefec2adb1e3cd7d5b93d)
注:虽然S的显示结果与X看上去一样,但其含义不同。X是数组,S是字符串。同样字符串可以转化为数组,例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-24.jpg?sign=1739412067-xnHN8PGPA534FqXC7wJlImN6cUbNCmGu-0-48a9d55d88bf01f03bb3a3c31e3a32ff)