![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=1738902564-Xa7lf1zIq2w3C0y7sjYoeotfpdePN8q5-0-1775e45b2488cd579c6cf55502190e5f)
运行结果如下:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-2.jpg?sign=1738902564-Dis1GBI5kNYwZlcRHFcKELTz5t3Uu1Xp-0-7999c00a57e92d9bbaaf090510dc2d6c)
字符串内可包含字母、数字、特殊字符以及中文字等内容。若在单引号外加大括号{}也可以显示字符串,例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-3.jpg?sign=1738902564-vVq4mJOB3UaJtQSXBBMJ3yyrapZFBQXN-0-10b3208ff2d8b36ff62c28224e1a2c3b)
从结果来看,显示的内容有单引号标示,而单引号法显示的却只是文本。
2.利用命令disp法
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-4.jpg?sign=1738902564-gxTJfSQkWmUR0MW5MX4FyriumSn18Lnd-0-5d385b997aa51b02b6b4e2f9c9285931)
例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-5.jpg?sign=1738902564-gIwRa2vGqzUNJ1jAHAHCKq6AboXJyIjy-0-876cabf41d3d7456716df3a594db3c63)
运行结果如下:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-6.jpg?sign=1738902564-J1KMMD8Zyvp6gQtzIVWZNNnKdBXZEZjS-0-b88a0822eeab646e9688538ea881eb03)
3.利用命令char法
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-7.jpg?sign=1738902564-fP5LD54RN1MMpy3QcWqT6UrZZqfqVqSu-0-a8436a7c159aa7bf2b10a15d530d62cd)
例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-8.jpg?sign=1738902564-aeiMm6HTYUMhRLnGbrYJXPU75VFJd0wz-0-b6a020223f1f97ae41c0356d65805af9)
4.利用命令input法
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-9.jpg?sign=1738902564-yOmJ4I0spOucKk6UMMRAGpvqwM3iwyOV-0-9c52c6b91602f7205ad9979bf16dc677)
如果变量in是's',则输入的内容以字符串的形式进行保存。
例如,在命令行窗口中输入:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-10.jpg?sign=1738902564-3TdixJL94JDrzjhcIfWQ4Ko8Fof7I3V1-0-f02347e05b621de98d4d99bc5e52e5c2)
运行结果如下:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-11.jpg?sign=1738902564-zjgkIsOlz32wbug7JOBhaeDy3CoIM6Lc-0-6ce801f6ffc7ceb99f57ba08a83598ad)
然后在“x:”的后面输入一个数6,按<Enter>键即得:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-12.jpg?sign=1738902564-ejtILedNhadOvYbKCWP6Zl1pVL4IaHsC-0-db5c26add6f1d7d3c211b38314ab7d4a)
此时数值6以变量x的形式显示在工作区Workspace内。若执行如下命令:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-13.jpg?sign=1738902564-z1oHUyaQ5CzsUB3NC4uqhjYvMWymRza9-0-c6043ebddf3a0e563f54f32532c20701)
此时数字6以字符串的形式保存在工作区Workspace内。
5.在字符串中用两个单引号来表示一个单引号
例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-14.jpg?sign=1738902564-JjMR3INr7W3lpEw6ear11P1LRcWvAPyS-0-3deeffa3d0504b7daf2c9dae5e6d3781)
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=1738902564-Y7pmevmiTaDytTzsUHFU0HSXV6TQ6PdT-0-8ef67fb016475a02a24aaf2ea5dc7098)
2.字符串的长度
字符串的长度可用length()和size()函数来确定,例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-16.jpg?sign=1738902564-G4ZWfXhdcPCKsHiTOCwXs7ya2frXZTz5-0-3109cf5c9ae0ffac2e1b4bcb8f123ea6)
3.字符串的查找
在字符串中寻找某个字符串,可用函数findstr()来实现。
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-17.jpg?sign=1738902564-VKDcHcvRXws7PsYVg8gVnKVlqoLknmEV-0-5161837ab80d229412692d08d32aff2a)
例如,在上面定义的字符串Book中查找A所在的位置:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-18.jpg?sign=1738902564-Ge4Lj7zectKT28XgqpMyh5BXwP6NgGaq-0-54e8232880e519cdb3a304109202ae8d)
注:字符串和要查找的字符串的位置可以互换,且其结果相同。因此,S1、S2哪个在前都可。
3.1.3 多行串数组的创建
1.多行串数组的直接输入
字符串数组可以是多行多列的数组,但必须保证每一行都有相同的列数。若字符串长度不一样,需要用空格填充,保证所有行的长度都相同。例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-19.jpg?sign=1738902564-c8PslJQZTUeAcboa6PDwk4fvnLXGijrp-0-44a905dc0bf01bb36b9d4bc7d240ff97)
2.利用串操作函数创建多行串数组
利用函数char()、strvcat()创建多行串数组,每行的字符串长度可以不同。例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-20.jpg?sign=1738902564-iEPTd7XBXfdzbRE1IyxMcA3qjWgNZjvJ-0-fa1f5d95ed2914a255b1e08adc41600a)
3.1.4 字符串数组的转换
1.字符串转换成矩阵
将字符串转换成矩阵的函数为str2mat()。例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-22.jpg?sign=1738902564-sq7M9SYVenCCGVCvuhNX8FUU9fddyLGa-0-0579be7338b112f1cdc1f34995f9f750)
2.字符串与数值的转换
利用str2num()和num2str()实现字符串与数值的相互转换。例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-23.jpg?sign=1738902564-4m4bImnGwbn4CNCus6hkwoN9qj3HEAfk-0-8686df3a8027ee7f4ddf3e3e2b007fdc)
注:虽然S的显示结果与X看上去一样,但其含义不同。X是数组,S是字符串。同样字符串可以转化为数组,例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-24.jpg?sign=1738902564-lR8vRD7jDRBTkyOEU434etkHrVnuij1b-0-ea7a734d12f2e140dc84be3699108822)