![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=1738839816-3H2BRuaU930doQM7SqSGJIytJsiU4frP-0-d9d707f879f9608d8966b2f307f449e1)
运行结果如下:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-2.jpg?sign=1738839816-E5NiVR9stipfD8m5lrOU6FYYQ4MLVEnx-0-bd3cafd0bb506df34ee3d6b13fa51a47)
字符串内可包含字母、数字、特殊字符以及中文字等内容。若在单引号外加大括号{}也可以显示字符串,例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-3.jpg?sign=1738839816-S0I76ixsEWDhJ3jhTzKlZSNSc2WOeT5Y-0-ed8380981eada5de226841e17b61ca8d)
从结果来看,显示的内容有单引号标示,而单引号法显示的却只是文本。
2.利用命令disp法
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-4.jpg?sign=1738839816-Lx4eazrk3XWssxFPPcmlyJZlcu4K6BCf-0-05804e7e791bf2d4de09582028d7363e)
例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-5.jpg?sign=1738839816-WisHQLj5Zy1TqLpAeDvD75NyDp8SQp6t-0-091403778a512b38d81d84a28550229f)
运行结果如下:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-6.jpg?sign=1738839816-tSPbxK6T6wtAXJuROw2kjCPe6nDX8fro-0-9144c20ae7444d15743e82dcae547af8)
3.利用命令char法
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-7.jpg?sign=1738839816-2M1yZvoyOW45ae8nrzFdPF2wwo6tM2NJ-0-40761ade8aeae9f32dce16f0525eb6b0)
例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-8.jpg?sign=1738839816-OhzP14SPtHSbcNTWoomvVsvPyUYEQVCI-0-1cf52f95ddbcb8e9dda25cbb92ea81af)
4.利用命令input法
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-9.jpg?sign=1738839816-l1VLFDirLNFH1cAQzzf39GnPF8BkrcjQ-0-2e940ae5859d1bc34ba9ec707bea98e4)
如果变量in是's',则输入的内容以字符串的形式进行保存。
例如,在命令行窗口中输入:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-10.jpg?sign=1738839816-yF3FZcSEQjKPEyFPLZJGbpDp07CFJxE9-0-603e6f3f3d18627400883086dc947c85)
运行结果如下:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-11.jpg?sign=1738839816-ubkXuyiHo3lLu6veUnah9pCWCfWXdqAd-0-c73968ee400180aacbb82c193c677e96)
然后在“x:”的后面输入一个数6,按<Enter>键即得:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-12.jpg?sign=1738839816-EPjlCmnQRtKV1b0EEch7ZOQYkJGaB911-0-85575ef7528de8bfc43c3d5118fd9c43)
此时数值6以变量x的形式显示在工作区Workspace内。若执行如下命令:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-13.jpg?sign=1738839816-h2DxOih029RObpSaWP5mAviXaTXthgny-0-bd9b778a48e02b96022c05bb1d365927)
此时数字6以字符串的形式保存在工作区Workspace内。
5.在字符串中用两个单引号来表示一个单引号
例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-14.jpg?sign=1738839816-9TY2Q8ZSsHhwRK1jh7lkpATNBSMgCRHw-0-440c3edd0c41430f159891e25884a40e)
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=1738839816-gJkk6EoGUpXkesz49EwStCv0cyCan0No-0-7a30b7bfda61371ec6323d1f17eedb78)
2.字符串的长度
字符串的长度可用length()和size()函数来确定,例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-16.jpg?sign=1738839816-Mkbue32iAOBgYuqjdrJ32aEWpxYAaILD-0-ea19aee3ffa2ed81a9dcd33687540a85)
3.字符串的查找
在字符串中寻找某个字符串,可用函数findstr()来实现。
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-17.jpg?sign=1738839816-ckY6xVBVQMo3zuSWu6QL6LMjjws7JKdl-0-12c7fee3f0fc9ef8e28330622a335f08)
例如,在上面定义的字符串Book中查找A所在的位置:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-18.jpg?sign=1738839816-5Q4GaRlXqxSjRjIDxxLt89ZJLsSfCjwX-0-8ba6b4b9fd9fb15bec9bc93261d28b0b)
注:字符串和要查找的字符串的位置可以互换,且其结果相同。因此,S1、S2哪个在前都可。
3.1.3 多行串数组的创建
1.多行串数组的直接输入
字符串数组可以是多行多列的数组,但必须保证每一行都有相同的列数。若字符串长度不一样,需要用空格填充,保证所有行的长度都相同。例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-19.jpg?sign=1738839816-FtCpeJln9BCxZiA5ptbFRrspmTrdaqUZ-0-a0fbae2d2a46a8a07fbf9ffcbc5ae34c)
2.利用串操作函数创建多行串数组
利用函数char()、strvcat()创建多行串数组,每行的字符串长度可以不同。例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-20.jpg?sign=1738839816-HSF1JODTDihauPfLJFNWYonAcwjPAMU2-0-13a5482fe136a8fd52ac7aba3916858d)
3.1.4 字符串数组的转换
1.字符串转换成矩阵
将字符串转换成矩阵的函数为str2mat()。例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-22.jpg?sign=1738839816-LQ41ubmzxkeOBAzwYbvc4A5U8iCulwX9-0-e5ff4dcac68843ad19e0fc3326f6e2c5)
2.字符串与数值的转换
利用str2num()和num2str()实现字符串与数值的相互转换。例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-23.jpg?sign=1738839816-pkRcmGDVl2YGOw4m9MQOO4JCkMuVCd1F-0-4ece15530aafb9839d0ce79e299f0c4c)
注:虽然S的显示结果与X看上去一样,但其含义不同。X是数组,S是字符串。同样字符串可以转化为数组,例如:
![](https://epubservercos.yuewen.com/0A09AD/16948915905056606/epubprivate/OEBPS/Images/978-7-111-53210-1-Chapter03-24.jpg?sign=1738839816-Gk29GCBwlKAMcJcDAD3ibQykLnmS3kVF-0-70e71e25564f03f1de711d1b268bb33e)