![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=1739177129-nDC9qpkjm4M7EQwRXmJqgXbNI6yzVxNs-0-b0cd224784ef9bf0884d4d87196ca7e0)
运行结果如下:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-2.jpg?sign=1739177129-rANzTxgrLpVeOvkIZcUzsLT4YFQOZ2Nb-0-64aec262dec2b7c408d700396629cb92)
字符串内可包含字母、数字、特殊字符以及中文字等内容。若在单引号外加大括号{}也可以显示字符串,例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-3.jpg?sign=1739177129-wjrdChoV8yYTk3gSiaWtbtwCw5fSqUUj-0-ef7bac687446b47d96bcb2ce4eda4024)
从结果来看,显示的内容有单引号标示,而单引号法显示的却只是文本。
2.利用命令disp法
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-4.jpg?sign=1739177129-ed6tXj9zRLZcqmfmHQEcmtLiUoMQEjs8-0-3a64890698ab1bcff1398a2fd9bc8c49)
例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-5.jpg?sign=1739177129-D2t3y203sfSn5l892BIL1Pq5rQBAFtPl-0-3387d05f9e495cb6a6843f76d5a28863)
运行结果如下:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-6.jpg?sign=1739177129-UmngyhpoqP3X7hFPkOBrEcS3WIQbskap-0-7152b3783a0d2dbd03e571e7881d8e69)
3.利用命令char法
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-7.jpg?sign=1739177129-ZMr6yE1dWgWhzPNTFSWyBNJMTPrDenKn-0-561672890ca80a28385a532b5d973f0b)
例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-8.jpg?sign=1739177129-utP2yluQIDFc8HSYOmAPYxPEPb65Ytum-0-a99367fa8743c401435edcc881abbd9a)
4.利用命令input法
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-9.jpg?sign=1739177129-jqsKbzqhcQNvoZlFnZROvlNL57AcVrZ4-0-e91dee6909ce8e9e5d87a933d6c277ac)
如果变量in是's',则输入的内容以字符串的形式进行保存。
例如,在命令行窗口中输入:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-10.jpg?sign=1739177129-vuD82jBAHNb6iey3p2NLVM8EceRU9dSd-0-74af81d4135712583719370b5aea1ed0)
运行结果如下:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-11.jpg?sign=1739177129-hWvZHpWMbl9i2qc7TqaQjcczzZyKj82K-0-a50f3b120d52293f572f44e418cd8007)
然后在“x:”的后面输入一个数6,按<Enter>键即得:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-12.jpg?sign=1739177129-Rdpl7uCXGXJvYufXJfFc1J2GCF7NwWXX-0-bf71d969fdd8696b53cb1c656c43e3a5)
此时数值6以变量x的形式显示在工作区Workspace内。若执行如下命令:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-13.jpg?sign=1739177129-lYt15qURc2TssXzrlGxNL8Fh8EJyTNtL-0-cbd0f4b55df2be128eb32ffa246968ec)
此时数字6以字符串的形式保存在工作区Workspace内。
5.在字符串中用两个单引号来表示一个单引号
例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-14.jpg?sign=1739177129-TlnWxik665hnnTflueH9LawbGa2V7Wto-0-d8d2b03906bcd38cfa2e59a44b3702fa)
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=1739177129-Utn0p5Wxjn7gl5JqL3O1DOu7JoGFoJAF-0-a3fe2d435663d2b8a7aa39ca96c0a4ae)
2.字符串的长度
字符串的长度可用length()和size()函数来确定,例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-16.jpg?sign=1739177129-Y7OfcWmQJvLU3AZ5P5QUibiPDQqolG1g-0-de7358f2759c993fbca095cb795fd5ce)
3.字符串的查找
在字符串中寻找某个字符串,可用函数findstr()来实现。
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-17.jpg?sign=1739177129-MZ2Hj5IqMht1oq1DSmo5F8NWaxen1gnq-0-f4ceb0f051f44945b2bee5cf885c511d)
例如,在上面定义的字符串Book中查找A所在的位置:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-18.jpg?sign=1739177129-J4IbbhbrGfRHCpV06h9uq6GCafUrBqkK-0-5b5bff94984d0c9f5ceb215d6381b0c0)
注:字符串和要查找的字符串的位置可以互换,且其结果相同。因此,S1、S2哪个在前都可。
3.1.3 多行串数组的创建
1.多行串数组的直接输入
字符串数组可以是多行多列的数组,但必须保证每一行都有相同的列数。若字符串长度不一样,需要用空格填充,保证所有行的长度都相同。例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-19.jpg?sign=1739177129-kytYcAznwvhLrK3eGP7Mm0KdhzNzFq6R-0-c239827a34e291f027bbb5e3bfdf3121)
2.利用串操作函数创建多行串数组
利用函数char()、strvcat()创建多行串数组,每行的字符串长度可以不同。例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-20.jpg?sign=1739177129-6gw9LiNqLCdpgtnh9AP5T1Kz1jQZqrRi-0-fe613464edaf6ae8ae04f84d029e709e)
3.1.4 字符串数组的转换
1.字符串转换成矩阵
将字符串转换成矩阵的函数为str2mat()。例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-22.jpg?sign=1739177129-hNS6kpXFwzwFQ2tD9XslIoI1YxDtKY3O-0-8db5be45d81db3ab632c257c5cee2e35)
2.字符串与数值的转换
利用str2num()和num2str()实现字符串与数值的相互转换。例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-23.jpg?sign=1739177129-Pycmor5JWsPocfnhycrRataPxiGK8tEl-0-9958d27eadb1745b7edcfaf872ba2ebd)
注:虽然S的显示结果与X看上去一样,但其含义不同。X是数组,S是字符串。同样字符串可以转化为数组,例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-24.jpg?sign=1739177129-4U7Fbt8CzitqRyUsY6l3UN5am453ApQh-0-d377388eec536434d41192aa4273fc86)