![MATLAB R2020a从入门到精通(升级版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/74/38507074/b_38507074.jpg)
7.1 字符串的创建
一个MATLAB字符串是一个char型数组,每个字符占2字节。当字符串被赋予一个变量时,这个变量将被自动创建为字符变量。
7.1.1 创建字符数组
可以用一对单引号来表示字符串,具体示例如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_1.jpg?sign=1738850869-fvsmXd70dBth8ZYtcITLVrlixo3tMmor-0-b92427e1e08b60443e829380a71ef80f)
也可以用字符串合并函数strcat()来得到一个新的字符串,具体示例如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_2.jpg?sign=1738850869-RLeLk3Bec0dy330Rnmfl4qWDggPJeOox-0-4299c0ce65ba2451f37da9ccb40f956e)
运行结果如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_3.jpg?sign=1738850869-M9sbUTIfEzKqb5sFpSlHm6SH1R3yroAs-0-4a799614f3ae513af9677b15114a23e9)
注 意
使用strcat()函数在合并字符串时会把字符串结尾的空格删除。要保留这些空格,可以用矩阵合并符“[]”来实现字符串合并,具体示例如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_4.jpg?sign=1738850869-zDXcD2FaALEOuCcqolsrBXHszwlD1h4N-0-bb4cf89dc01ec24924cf6e7ce33f8384)
运行结果如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_5.jpg?sign=1738850869-NP2NLhozFmdDKvrNRevxt5QXq5sCerFH-0-354e91eb96769051c3cf2f1dc0243c44)
用户也可以创建二维字符数组,但要注意保证二维字符数组的每行具有相同的长度。如下所示的字符串是合法的,因为它的每行都有6个字符:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_6.jpg?sign=1738850869-9jCIVrKvajoZanXo5GnzGloyNUExZS1Q-0-96695740a1c7acc3e4ff9a5e92ba048b)
上述语句的输出结果如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_7.jpg?sign=1738850869-RbEZduFXmZAQAZXekRKeO9B91q41cWlH-0-479872bde61f5525b1d3e2fba9974280)
当创建的多个字符串具有不同的长度时,可以在字符串的尾部添加空格来强制实现字符串具有相同的长度。具体示例如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_8.jpg?sign=1738850869-J3N89lTd1Dq1HZo2U0Rc4NpCJKU7ui5U-0-5cd3f144563de3af6b194aa4ca07299a)
运行结果如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_9.jpg?sign=1738850869-b3S3bUGsRxhpCt2ofprz9vXZq5DOFbMT-0-19a87f22194cf8695efce6e755042af8)
更简单的方法是利用char()函数来创建字符串。使用char()函数创建字符串数组时,如果字符串不具有相同的长度,则char()函数自动用空格把字符串补足到最长的字符串的长度。具体示例如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_10.jpg?sign=1738850869-R1DhXWm2v3oAb4OxAcerVRMXbtF3wBKo-0-dafc93af6cb7fd8eae7e856aea63bb1e)
运行结果如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_11.jpg?sign=1738850869-GVK80sS1aHa1IkcZ0O7ST49mzcRCUFP7-0-ac7518726b60cd26f02dd31f7d90bc85)
strvcat()函数与char()函数具有类似的功能。strvcat()函数把多个字符串合并为一个字符串数组。当字符串不具有相同的长度时,strvcat()函数自动在尾部添加空格补足到最长的字符串的长度。具体示例如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_12.jpg?sign=1738850869-C63A4n3eIE20Iutzgm5drKncRH3zhCo1-0-3342cfa04ceb73c88574fe3de26e89ab)
运行结果如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_13.jpg?sign=1738850869-3UXGrV6ZfZvrnymmE0j6glct4kznyDIB-0-c562ac5536b365252eabdce48a261d27)
把上述字符数组转换成字符串单元数组的代码如下所示:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_14.jpg?sign=1738850869-8mOZFmSg6ttcVhMDGZTmG1RMQKHADYif-0-4ff03fa86f41266370c3e729b3fecc5c)
运行结果如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_15.jpg?sign=1738850869-YUnKtn8c3xUjYL0NvlWtHg6OdZW3sfmn-0-4ca74b5a134bce4ddf8fca497af9cbf0)
注 意
cellstr()函数可以把字符串尾部的空格删除。可以查看celldata的第1个字符串长度,具体示例如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_16.jpg?sign=1738850869-YXzFXYiSuHVd3VtazifHJamlTjWi1G9x-0-338d463175426834729fc1be75060f81)
运行结果如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_17.jpg?sign=1738850869-gpZ00qxkgLdDWmP14jiDARrGgZAwAUde-0-a6e49b2a6d973001dc580d7509378f3b)
可以使用char()函数把一个字符串单元数组转换成一个字符数组,具体示例如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_18.jpg?sign=1738850869-QjyREFybyxro208zRtS5QQHCr76L8XXM-0-9e1b0673d903e1b49715bc0b6b561f19)
运行结果如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_19.jpg?sign=1738850869-MQ6ZQ2LQsX0Lok8mrLvieIvZGVN7DAFv-0-8c8f57656918eefaee813171e0406146)
使用如下所示的代码可以得到其第1个字符串的长度:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_20.jpg?sign=1738850869-499nj7799MOQeifs8orn2gT6dNZBo4H7-0-3851ad56194a70757b0aedf296d37983)
运行结果如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_21.jpg?sign=1738850869-Isi2B38Go7bKsM0EsY5K41ScIubovtjK-0-ee5f4f6ab9963065382e755c5be49423)
7.1.2 创建二维字符数组
在 MATLAB 中还可以创建二维字符数组,但一个数组中每行的长度都必须相等。如果其中的一行比其他行短,那么这个字符数据将无效,并产生一个错误。例如,如下所示的语句是非法的,因为两行的长度不同:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_22.jpg?sign=1738850869-YS5VK2rXYbtVuTTX4MhkKT0N1FBzqIjT-0-bdef90e827125ab3fb088ef0d30be334)
创建二维字符数组最简单的方法是使用 char()函数,使用该函数可以自动寻找所有字符串中最长的那一个。
具体示例如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_23.jpg?sign=1738850869-2UNEJlBm0780MMlyP7N98Q4P6rFlGl9i-0-584908ea14d11ed02936e347941edc75)
可以使用deblank()函数删除多余的空格。例如,如下所示的语句用于删除name数组中第2行多余的空格,并将运行结果与原来的进行比较:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_24.jpg?sign=1738850869-YXAwbhCXYl0fFkgUXgrbeXR6XdWT1iGx-0-ce52037bd6058e4c3a1746cc26ca65a8)
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_25.jpg?sign=1738850869-hgtQ7gMYwFBoarDWrGmylcbZxkHjEP1Z-0-0c9e68e84d28d5b309c467419d17f57c)