![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=1739291761-UpSG48MxxS1URWl9EcPlQiinlzpnUhAc-0-40535556057a4069c05d228f9a5688c3)
运行结果如下:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-2.jpg?sign=1739291761-VhOdbMXsUJa76rn9NnC4ltw9k862mrBz-0-50a831eb0c2e47704862d5535c30965f)
字符串内可包含字母、数字、特殊字符以及中文字等内容。若在单引号外加大括号{}也可以显示字符串,例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-3.jpg?sign=1739291761-hdfb83cN4V4h4szQtrApExVJeyclv8E7-0-493afe96a0b5b9d0c872bb607a1d71e4)
从结果来看,显示的内容有单引号标示,而单引号法显示的却只是文本。
2.利用命令disp法
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-4.jpg?sign=1739291761-3llKiIktystaFZcaVun3ODD2mwRTJRp8-0-452064eb04e67fb5a3d2992ae36400c4)
例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-5.jpg?sign=1739291761-vRPt6huyHJoTKqH92n9EtH3Ruv8TN1r5-0-c077758b6dfc516eac5239ffa6cd57ce)
运行结果如下:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-6.jpg?sign=1739291761-Inhol95REBCrR5opKwhB0K1Ovvl6ljEp-0-eafb8d6a877d60ee94df52fa8579ffbc)
3.利用命令char法
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-7.jpg?sign=1739291761-BJzdSddkgmO9ADAMCrEVVLnSr32XH2xi-0-39dff3aceb55d0d096cf238ff301bd4b)
例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-8.jpg?sign=1739291761-JUqtWOYPrNB0uTLvLT8QdynpLhmDVEyr-0-6c78c16b83bd32a530385094fc3e8efb)
4.利用命令input法
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-9.jpg?sign=1739291761-sozNlHFERF1EBYfIWnjJ6sYVfl9Ug6zp-0-ef61859b991d22747c1958eddeba6fe4)
如果变量in是's',则输入的内容以字符串的形式进行保存。
例如,在命令行窗口中输入:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-10.jpg?sign=1739291761-xGViUbqPajQYQiMkLDFwG359U3bwDZsZ-0-1840420d987e6ea22b7820fe78cb27df)
运行结果如下:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-11.jpg?sign=1739291761-DwD1Jnr48xyELOP8mCmOoFGbMtslkGZR-0-c58df7f4fa789ccbde657b66013993dc)
然后在“x:”的后面输入一个数6,按<Enter>键即得:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-12.jpg?sign=1739291761-lyvUND9sFps72ZDi5eIAaBWHZIF7BInV-0-30bcf8293f8839683b68b5a48fe8e81f)
此时数值6以变量x的形式显示在工作区Workspace内。若执行如下命令:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-13.jpg?sign=1739291761-QLLviQm3WOGL0yWpjYBW0fNH1EukIzFP-0-43cbe87d636558f3904ce3dde0e85a84)
此时数字6以字符串的形式保存在工作区Workspace内。
5.在字符串中用两个单引号来表示一个单引号
例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-14.jpg?sign=1739291761-BLcLTE5svqIMx5XgT1WiMgl8Xqx7qPdE-0-9ccdec48bc686b4a9508daa97c655422)
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=1739291761-rWHSIyhY1tyFw1BpjnieqjgPdquWPw3Z-0-a43f81b7ce8a1febec9a44506ae57cbd)
2.字符串的长度
字符串的长度可用length()和size()函数来确定,例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-16.jpg?sign=1739291761-UnVyjHhotDrxynpq1nBiHZJmJ7dcQ6Qs-0-c26a6204b937e14f7da9e92c19ab64df)
3.字符串的查找
在字符串中寻找某个字符串,可用函数findstr()来实现。
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-17.jpg?sign=1739291761-GhAJ0EMjvm92yI4L9JT2Ptuc0aGo2c5L-0-cae0327eb21427ebf0913e759669c73b)
例如,在上面定义的字符串Book中查找A所在的位置:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-18.jpg?sign=1739291761-9SNBgBEK6JtIBKgtu4AyF1k3VmzWyriH-0-52ee61c7f9db8c03f95a1a1c15efcca1)
注:字符串和要查找的字符串的位置可以互换,且其结果相同。因此,S1、S2哪个在前都可。
3.1.3 多行串数组的创建
1.多行串数组的直接输入
字符串数组可以是多行多列的数组,但必须保证每一行都有相同的列数。若字符串长度不一样,需要用空格填充,保证所有行的长度都相同。例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-19.jpg?sign=1739291761-hjyyq8rQv6fceS9K49nebjaDsbEjinIm-0-bf20e59bb78759fa80bc3989ce09efaa)
2.利用串操作函数创建多行串数组
利用函数char()、strvcat()创建多行串数组,每行的字符串长度可以不同。例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-20.jpg?sign=1739291761-A8heTXluuLf2CITOyeanxjFNBESV8CX0-0-5eb0807726424ecc685934ab1fb2727c)
3.1.4 字符串数组的转换
1.字符串转换成矩阵
将字符串转换成矩阵的函数为str2mat()。例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-22.jpg?sign=1739291761-zhJ7VTG9MQ8Wt0057lNJC08LspgMAUJt-0-da0501b1fd229c1c490fe14a01a7f775)
2.字符串与数值的转换
利用str2num()和num2str()实现字符串与数值的相互转换。例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-23.jpg?sign=1739291761-tOG9oA22eKXbdcs8geiU69d5T4idABVI-0-96a325fe69f77164b1ed500ee353ee4f)
注:虽然S的显示结果与X看上去一样,但其含义不同。X是数组,S是字符串。同样字符串可以转化为数组,例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-24.jpg?sign=1739291761-SUXmeuLbYw1gYrjBhysHlfSOFnJvkpAd-0-5ba5137851b83d4481fa5345790f57f7)