![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=1738867437-pPgU9jgMgT4qnjwN4OWnW8G8C3LLobnU-0-c417d527c1405e5d7fea7ea2da0e3882)
也可以用字符串合并函数strcat()来得到一个新的字符串,具体示例如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_2.jpg?sign=1738867437-iiJ9L1Y5hciOzZl4VpNLydXqZE6JBQCG-0-c7ff561e72e9273544427161face7b21)
运行结果如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_3.jpg?sign=1738867437-oW8HkF0QDj2PZ8sMvsgehPMBQI0v5ScI-0-b7c1614e4fe137c5de0eb1169d837196)
注 意
使用strcat()函数在合并字符串时会把字符串结尾的空格删除。要保留这些空格,可以用矩阵合并符“[]”来实现字符串合并,具体示例如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_4.jpg?sign=1738867437-aAcB6CC8mFLMK2ogTpqSgNDNI0uOgadg-0-37611ddc474895a7d9c8322e49730dfe)
运行结果如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_5.jpg?sign=1738867437-FwSOYeGTEWM0twpiV2zd0cSV7GbLk6wl-0-32bcdc9bca3404e3587e905f052274ca)
用户也可以创建二维字符数组,但要注意保证二维字符数组的每行具有相同的长度。如下所示的字符串是合法的,因为它的每行都有6个字符:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_6.jpg?sign=1738867437-vDMTcw2aephuZ2GEl9R0mvyUDqHaJcSi-0-977b9f3608ef2ea633fcba41ed692f16)
上述语句的输出结果如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_7.jpg?sign=1738867437-YEqkri3j0WVYMtbEJqUnxMwgrWzgcQ00-0-53a2c7930f9f5652c059059381621176)
当创建的多个字符串具有不同的长度时,可以在字符串的尾部添加空格来强制实现字符串具有相同的长度。具体示例如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_8.jpg?sign=1738867437-sp1POOcgsHKQC4Gaab4k0OHHkTdmfTRT-0-7c8c1045ba809c9c39aeb5af9685c862)
运行结果如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_9.jpg?sign=1738867437-iJh71JmH56fota2HauJMgwSUbBgRqigZ-0-b3200d9abf8ac0e7cc22d1a0a4f8d54f)
更简单的方法是利用char()函数来创建字符串。使用char()函数创建字符串数组时,如果字符串不具有相同的长度,则char()函数自动用空格把字符串补足到最长的字符串的长度。具体示例如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_10.jpg?sign=1738867437-F1YbPWocLh03o9oCNfZ7Cv6BEuvkoXJb-0-170e2f19fff2e069db9ec59a0e725b06)
运行结果如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_11.jpg?sign=1738867437-Fra6JG2JH6QaUlYfeRboC2rrFRNFUe9t-0-0c86820996f568d969d6ab438ed4417e)
strvcat()函数与char()函数具有类似的功能。strvcat()函数把多个字符串合并为一个字符串数组。当字符串不具有相同的长度时,strvcat()函数自动在尾部添加空格补足到最长的字符串的长度。具体示例如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_12.jpg?sign=1738867437-ghbxeOmwvGo72xlXJ0RHDJzLsxlk9VR6-0-de0b29cbf4dec9b15946cb22a38df3c0)
运行结果如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_13.jpg?sign=1738867437-HhwrnqjsSBBxe6tFsCECaUAnPKqmKMUv-0-b7245c90fbae169995410f236376e175)
把上述字符数组转换成字符串单元数组的代码如下所示:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_14.jpg?sign=1738867437-ZvTMVbIKHTh8WAnLDAJBZkhl0dJfXxCI-0-d7810d2821786e3080f8ce01b9e12ab6)
运行结果如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_15.jpg?sign=1738867437-37OJE0FD7sf7oratysDd7nzjiTWGa195-0-58a92e87378495b31140720d76ec93e5)
注 意
cellstr()函数可以把字符串尾部的空格删除。可以查看celldata的第1个字符串长度,具体示例如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_16.jpg?sign=1738867437-wtMAfPlpvjYOXjIU22fLy3ys6k0TRTRE-0-a2aeca2dd8548d6fa91c0a3a4e6cd361)
运行结果如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_17.jpg?sign=1738867437-cneRhdV4pwgZFFKV7RBAkSdg1PKvJaHC-0-b5f934255e8aeca5a1ddcdf0397a9b30)
可以使用char()函数把一个字符串单元数组转换成一个字符数组,具体示例如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_18.jpg?sign=1738867437-VTqjOxwH5cCdAESmOdDA1nXP3Ncgn8uu-0-41743cc9c5d85b405e9e3825ba80c03e)
运行结果如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_19.jpg?sign=1738867437-p4M38Je7g8tVsVurmUlnrZPpa8jaYZL6-0-3ee76b5cd87ff45257311d3d2ade8143)
使用如下所示的代码可以得到其第1个字符串的长度:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_20.jpg?sign=1738867437-SSLYpW0ZbEoyiiwnDJaA3jkJeiCFMIbu-0-3757cbede0f1f4478beac7adeae34e07)
运行结果如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_21.jpg?sign=1738867437-SsydqQ28xX3OutFhHUQbRQFDvdIawKhL-0-1f61f93c8a5f64bea4dd34881d770fa0)
7.1.2 创建二维字符数组
在 MATLAB 中还可以创建二维字符数组,但一个数组中每行的长度都必须相等。如果其中的一行比其他行短,那么这个字符数据将无效,并产生一个错误。例如,如下所示的语句是非法的,因为两行的长度不同:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_22.jpg?sign=1738867437-afRRtr2LDmLY2kabNNmrs5v9DT3S3HtF-0-23225aa5f567abf2d3437bdb31a93c81)
创建二维字符数组最简单的方法是使用 char()函数,使用该函数可以自动寻找所有字符串中最长的那一个。
具体示例如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_23.jpg?sign=1738867437-5taH1hn1yUsJ5bBS2YpXaLJalhWGml1i-0-fcbdb664995aa008b1459473d1dd2197)
可以使用deblank()函数删除多余的空格。例如,如下所示的语句用于删除name数组中第2行多余的空格,并将运行结果与原来的进行比较:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_24.jpg?sign=1738867437-mvfc7incJEuaeLcmDJCjKFjMIHnlasJp-0-040cf3c5b4b0cb9c655bd847558bc457)
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_25.jpg?sign=1738867437-tMDCnKRUDiHklqMwhANCNTxEwxwo3g4G-0-f7cb10ebce917069fa7c13c041a30af3)