![MATLAB GUI程序设计](https://wfqqreader-1252317822.image.myqcloud.com/cover/836/26793836/b_26793836.jpg)
2.3 字符串
字符串或串(String)是由数字、字母、下画线组成的一串字符。字符串在数据的可视化、应用程序的交互方面起到非常重要的作用,创建字符串时需要使用单引号将字符串的内容包括起来,字符串一般以行向量形式存在,并且每一个字符占用两个字节的内存。
2.3.1 创建字符串
【例2-46】 创建字符串时,只要将字符串的内容用单引号包括起来即可。
程序命令如下:
![](https://epubservercos.yuewen.com/BF3987/15253389504122706/epubprivate/OEBPS/Images/Figure-P63_3105a.jpg?sign=1739311552-4rdQTYWCRYie22D6337h3sAFOwXm6e4O-0-75925f30a7f01e3cf32c0a1b681d3612)
运行结果如下:
![](https://epubservercos.yuewen.com/BF3987/15253389504122706/epubprivate/OEBPS/Images/Figure-P64_3124a.jpg?sign=1739311552-ZC6DBbWkHkYjKLUVxDs1SGEzSDRGKZqh-0-90fca7fb592e2da861a4d758c809fd80)
若需要在字符串内容中包含单引号,则在输入字符串内容时,连续输入两个单引号即可,例如:
![](https://epubservercos.yuewen.com/BF3987/15253389504122706/epubprivate/OEBPS/Images/Figure-P64_3133a.jpg?sign=1739311552-94YO8fLY1SDejpzYUolYcSDWbzhnwVbv-0-0e23ac3e076f4b849cf5f1d520b2ed66)
运行结果如下:
![](https://epubservercos.yuewen.com/BF3987/15253389504122706/epubprivate/OEBPS/Images/Figure-P64_3141a.jpg?sign=1739311552-UGEc5aqR1fmq5M1dyAFYfdB8xehxGzWd-0-9de73e90958d0e0959ab6185aba14430)
【例2-47】 使用char函数创建一些无法通过键盘输入的字符,该函数的作用是将输入的整数参数转变为相应的字符。
程序命令如下:
![](https://epubservercos.yuewen.com/BF3987/15253389504122706/epubprivate/OEBPS/Images/Figure-P64_3149a.jpg?sign=1739311552-pj0m69olH9FkSCObgNvdg8Ox0LCWHINX-0-782ab0b6c7ec5a718e27b8c200760b93)
运行结果如下:
![](https://epubservercos.yuewen.com/BF3987/15253389504122706/epubprivate/OEBPS/Images/Figure-P64_3157a.jpg?sign=1739311552-OWo2jqmqNLeNEMf9XKEq2adVA4VS4JXX-0-f2fa77aa41f599634101ce4099f0ce30)
2.3.2 基本字符串操作
基本字符串操作主要有字符串元素索引、字符串的拼接、字符串与数值之间的转换。下面将分别进行介绍。
1.字符串元素索引
在MATLAB中,字符串实际上也是一种特殊的向量或者数组,一般利用索引操作数组的方法都可以用来操作字符串。
【例2-48】 利用索引操作数组的方法来操作字符串。
程序命令如下:
![](https://epubservercos.yuewen.com/BF3987/15253389504122706/epubprivate/OEBPS/Images/Figure-P65_3173a.jpg?sign=1739311552-8wg5hWEEaqcN4P4boOntOkjEboCWAYaq-0-8c5ba57051a67fccee9cb47d40bd8cf7)
运行结果如下:
![](https://epubservercos.yuewen.com/BF3987/15253389504122706/epubprivate/OEBPS/Images/Figure-P65_3181a.jpg?sign=1739311552-RttSy9MuIJwWbevmOV26PHLQ9TbFXZPD-0-3af6aad33b57230b76b3e4583f3348a5)
2.字符串的拼接
字符串可以利用[]运算符进行拼接,若使用“,”作为不同字符串之间的间隔,则相当于扩展字符串成为更长的字符串向量;若使用“;”作为不同字符串之间的间隔,则相当于扩展字符串成为二维或者多维的数组,这时不同行上的字符串必须具有同样的长度。
【例2-49】 字符串的拼接示例。
程序命令如下:
![](https://epubservercos.yuewen.com/BF3987/15253389504122706/epubprivate/OEBPS/Images/Figure-P65_3189a.jpg?sign=1739311552-w8fxHk9GDSdEzM4x6KKe1gH1XWV5JT4E-0-aaca951883658c32a309e3bd503f0772)
运行结果如下:
![](https://epubservercos.yuewen.com/BF3987/15253389504122706/epubprivate/OEBPS/Images/Figure-P66_3213a.jpg?sign=1739311552-CF6IYiS8cwC0A0xaguceteIZXhjThF5s-0-f437c95837a7185a6943d6b15bd6f6bf)
3.字符串和数值的转换
在MATLAB中,字符串和数值的转换可以使用char函数可以将数值转变为字符串,也可以使用double函数将字符串转变成数值。
【例2-50】 字符串和数值的转换示例。
程序命令如下:
![](https://epubservercos.yuewen.com/BF3987/15253389504122706/epubprivate/OEBPS/Images/Figure-P66_3223a.jpg?sign=1739311552-txKMz8DJClDiU6pLJkMDpmFogOac2dMj-0-a5414b4aba3a5d6d575472ea4034a1c5)
运行结果如下:
![](https://epubservercos.yuewen.com/BF3987/15253389504122706/epubprivate/OEBPS/Images/Figure-P66_3233a.jpg?sign=1739311552-6d9q3Tz7BHmx8xkD579VHZL4RHD0ry0o-0-44b1c49b1989c4472d734fde5baf61bc)
2.3.3 字符串操作函数
在MATLAB中,字符串操作函数如表2-11所示。
表2-11 字符串操作函数
![](https://epubservercos.yuewen.com/BF3987/15253389504122706/epubprivate/OEBPS/Images/Figure-T67_3393a.jpg?sign=1739311552-YDedrq6LaccydnJFnkT1DM8OHuNqYrKa-0-29189920da0409390674716027ad3d76)
【例2-51】 deblank函数示例。
程序命令如下:
![](https://epubservercos.yuewen.com/BF3987/15253389504122706/epubprivate/OEBPS/Images/Figure-P67_3380a.jpg?sign=1739311552-d0f23KVC2ZD9Am9EycNvP75c8oFSI6j7-0-0d1d307ad1a27337d2b58f0ae55e4f8a)
运行结果如下:
![](https://epubservercos.yuewen.com/BF3987/15253389504122706/epubprivate/OEBPS/Images/Figure-P67_3388a.jpg?sign=1739311552-aJJUop1566NEqHnUY8JMFSjdB2SCobTt-0-335b675db22358ba0170bb328b407a7f)
【例2-52】 ischar函数示例。
程序命令如下:
![](https://epubservercos.yuewen.com/BF3987/15253389504122706/epubprivate/OEBPS/Images/Figure-P68_3409a.jpg?sign=1739311552-udzL2NrGGHxWqpRwobErQHnmXd2LcXaR-0-c689889daec50496b9bb54848421db2a)
运行结果如下:
![](https://epubservercos.yuewen.com/BF3987/15253389504122706/epubprivate/OEBPS/Images/Figure-P68_3417a.jpg?sign=1739311552-Q8RclE1qLzHq1z5xijGICesaEurVohrm-0-4fee921fb3bf73936473e63d9e4cc235)
【例2-53】 组合字符串strcat函数和strvcat函数示例。
程序命令如下:
![](https://epubservercos.yuewen.com/BF3987/15253389504122706/epubprivate/OEBPS/Images/Figure-P68_3425a.jpg?sign=1739311552-tAyZwXyKEwEtx8TwtaaldU0pKWICmm4y-0-dd04c78c3a11b80fef416eec6ac8c983)
运行结果如下:
![](https://epubservercos.yuewen.com/BF3987/15253389504122706/epubprivate/OEBPS/Images/Figure-P68_3433a.jpg?sign=1739311552-uAbR69KKzQt4EYzeaRJXvippPem1S4VN-0-13ba2e674dac45151c36c3c2c2d596bb)
【例2-54】 查寻索引findstr函数和strfind函数示例。
程序命令如下:
![](https://epubservercos.yuewen.com/BF3987/15253389504122706/epubprivate/OEBPS/Images/Figure-P69_3446a.jpg?sign=1739311552-UjxFGbqcWvw0J8EWYtLx6zTccEMFKqiM-0-0f5134f334d06d37aae7b909ebf282c9)
运行结果如下:
![](https://epubservercos.yuewen.com/BF3987/15253389504122706/epubprivate/OEBPS/Images/Figure-P69_3454a.jpg?sign=1739311552-DEo8wzRkXNnMDmb14tr4T3G4T06Xkz3Z-0-d1849936cf83a988f17ffc924d5b0ddd)
【例2-55】 对齐排列字符串strjust函数示例。
程序命令如下:
![](https://epubservercos.yuewen.com/BF3987/15253389504122706/epubprivate/OEBPS/Images/Figure-P69_3465a.jpg?sign=1739311552-keUO5HdKVMZd1QWKIHzmBzDW6iND6KSi-0-70afb9f4f4c90fd83afe8d53c73d23e9)
运行结果如下:
![](https://epubservercos.yuewen.com/BF3987/15253389504122706/epubprivate/OEBPS/Images/Figure-P69_3473a.jpg?sign=1739311552-r4T42EKlR3bSkpWAB9HfSgblZtlhit34-0-43914fb851e491eb230c5b26fef0ab65)
【例2-56】 替换字符串中的子字符strrep函数示例。
程序命令如下:
![](https://epubservercos.yuewen.com/BF3987/15253389504122706/epubprivate/OEBPS/Images/Figure-P69_3481a.jpg?sign=1739311552-nAbdN1epjL18y5LW2IekqGQyL0V7Fuhb-0-e016a618cf09e148504dbcc35ab89cd4)
运行结果如下:
![](https://epubservercos.yuewen.com/BF3987/15253389504122706/epubprivate/OEBPS/Images/Figure-P69_3489a.jpg?sign=1739311552-ew3lIMFypPI3KOhyH5TqztdYtQ5U3QIN-0-6180ae368d5e571d41cc5de2445a7569)
【例2-57】 查寻匹配的字符串strmatch函数示例。
程序命令如下:
![](https://epubservercos.yuewen.com/BF3987/15253389504122706/epubprivate/OEBPS/Images/Figure-P70_3509a.jpg?sign=1739311552-YF2YVxD1TVQeIfgrAEVk9rjy6wXwQCBJ-0-d48cc5fab70a213022148e3548e1935f)
运行结果如下:
![](https://epubservercos.yuewen.com/BF3987/15253389504122706/epubprivate/OEBPS/Images/Figure-P70_3517a.jpg?sign=1739311552-9CjVSSLGWlAIaS3LxbeQKHcptbOqqSOl-0-b0d1980eeef95512f462994a6455c0ad)
【例2-58】 改变字符串的字符的大小写upper函数和lower函数示例。
程序命令如下:
![](https://epubservercos.yuewen.com/BF3987/15253389504122706/epubprivate/OEBPS/Images/Figure-P70_3529a.jpg?sign=1739311552-2oKbwQWz6UUPOrMwbYAbiQg6pZHEO1SU-0-350382a746dbd0149b90c970d28ce119)
运行结果如下:
![](https://epubservercos.yuewen.com/BF3987/15253389504122706/epubprivate/OEBPS/Images/Figure-P70_3537a.jpg?sign=1739311552-sgrR1dbbNXWz8cQE1Nmok0iYyXYhEdWm-0-9f2f2598cafbd4e153b0447c9d68c914)
1.字符串转换函数
使用字符串转换函数可以允许不同类型的数据和字符串类型的数据之间进行转换,在MATLAB中直接提供了相应的函数如表2-12和表2-13所示。
表2-12 数字和字符之间的转换函数
![](https://epubservercos.yuewen.com/BF3987/15253389504122706/epubprivate/OEBPS/Images/Figure-T70_3603a.jpg?sign=1739311552-dBj6fi4g73MPQ8GhcEQWZtI3AVsDThQs-0-bff9fcdc959dcdcddaa8ac13d7b877c5)
表2-13 不同数值之间的转换函数
![](https://epubservercos.yuewen.com/BF3987/15253389504122706/epubprivate/OEBPS/Images/Figure-T71_3774a.jpg?sign=1739311552-gDBR6H9yGDnLKx959CT2Rc16esrAA2eo-0-81204a24a6814ae7a5f3247d63221e8e)
函数str2num在使用时需要注意:被转换的字符串仅能包含数字、小数点、字符e或者d、数字的正号或者负号、复数的虚部字符i或者j,使用时要注意空格,例如:
![](https://epubservercos.yuewen.com/BF3987/15253389504122706/epubprivate/OEBPS/Images/Figure-P71_3755a.jpg?sign=1739311552-p7HH5PCpv7JWsIU9ave1DMOJY99UANMg-0-bcffb4ba27cc92604781daa52fca8543)
运行结果如下:
![](https://epubservercos.yuewen.com/BF3987/15253389504122706/epubprivate/OEBPS/Images/Figure-P71_3763a.jpg?sign=1739311552-S2U2xpY6v14mLILrX1cKYFkJ2iv9gkBy-0-43b96d2f96c1090a734f858d529766f3)
【例2-59】 str2num函数示例。
程序命令如下:
![](https://epubservercos.yuewen.com/BF3987/15253389504122706/epubprivate/OEBPS/Images/Figure-P71_3770a.jpg?sign=1739311552-gCcZX4O8QvhMB0yrf1Tsrrg3xJFDv2ic-0-f8e87684c2bda01a0cb7f3490fdd262d)
运行结果如下:
![](https://epubservercos.yuewen.com/BF3987/15253389504122706/epubprivate/OEBPS/Images/Figure-P72_3785a.jpg?sign=1739311552-6wo9Wt40ufQsu0aeURuX9kiImxbii6wz-0-a078c89a1e7a735e2de913db8227778a)
【例2-60】 使用函数num2str将数字转换成为字符串时,指定字符串所表示的有效数字位数。
程序命令如下:
![](https://epubservercos.yuewen.com/BF3987/15253389504122706/epubprivate/OEBPS/Images/Figure-P72_3794a.jpg?sign=1739311552-mtJraqB6VMCDJ6WMgKHpbbxUi2bLCC57-0-94447ffc8b046384eab377a0cc4daa1a)
运行结果如下:
![](https://epubservercos.yuewen.com/BF3987/15253389504122706/epubprivate/OEBPS/Images/Figure-P72_3802a.jpg?sign=1739311552-v93TXjxy3GAPlQOSg2l4WWwSWOOa54bL-0-48020822851560545d48414e6f501e31)
【例2-61】 其他的转换函数示例。
程序命令如下:
![](https://epubservercos.yuewen.com/BF3987/15253389504122706/epubprivate/OEBPS/Images/Figure-P72_3810a.jpg?sign=1739311552-ou8BQnYkCLVUDstYi9UqepwBmDy1JbP4-0-4a52fa55d99548680aa56a73e7dc6556)
运行结果如下:
![](https://epubservercos.yuewen.com/BF3987/15253389504122706/epubprivate/OEBPS/Images/Figure-P73_3822a.jpg?sign=1739311552-GabR8Xog1yJ4x9Fhkd4FBPdnYgsfuulQ-0-74c960a7ab108136fab8923768138449)
2.格式化输入输出
MATLAB可以进行格式化的输入、输出,格式化字符串都可以用于MATLAB的格式化输入输出函数,如表2-14所示。
表2-14 格式化字符
![](https://epubservercos.yuewen.com/BF3987/15253389504122706/epubprivate/OEBPS/Images/Figure-T73_3916a.jpg?sign=1739311552-2MWp5gLnh9swSPpbZxHpPiAX5CE86TDM-0-ee38e6617f334c1549af5bcae1632874)
在MATLAB中,sscanf和sprintf这两个函数用来进行格式化的输入和输出,他们的调用方法为
A=sscanf(s,format,size):读取格式化字符串;
S=sprintf(format,A,...):格式化输出数据到命令行窗口。
【例2-62】 sscanf函数示例。
程序命令如下:
![](https://epubservercos.yuewen.com/BF3987/15253389504122706/epubprivate/OEBPS/Images/Figure-P74_3924a.jpg?sign=1739311552-x0PXQU2HzMbLs8t9UlmTYHX8S09lucG6-0-70f06000d7680e377bfe3f96231cb56b)
运行结果如下:
![](https://epubservercos.yuewen.com/BF3987/15253389504122706/epubprivate/OEBPS/Images/Figure-P74_3932a.jpg?sign=1739311552-MjSLxDEBMyL5KAeuhdLiBf84jZEjbqVI-0-15a175cf9436fb0f4d0341c18ad4ed23)
【例2-63】 sscanf函数示例(A=sscanf(s,format,size))。
程序命令如下:
![](https://epubservercos.yuewen.com/BF3987/15253389504122706/epubprivate/OEBPS/Images/Figure-P74_3940a.jpg?sign=1739311552-2Vxb860NadJ6NVEdhNXRjn851UszEvko-0-ad4786682ccde6055f41d37af978dff4)
运行结果如下:
![](https://epubservercos.yuewen.com/BF3987/15253389504122706/epubprivate/OEBPS/Images/Figure-P74_3948a.jpg?sign=1739311552-y4VPg39eRA31pr1opEVfB5aDyCLUJFrX-0-d92f02e145d43f563db6564598976d92)
在MATLAB中,input函数具有获取用户输入数据的功能,以满足能够和用户的输入进行交互的需要,该函数的调用方法为
A=input(prompt)
A=input(prompt,'s')
其中,第一个参数prompt为提示用的字符串。第二个参数s:若有s,则输入的数据为字符串;没有s,则输入的数据为双精度数据如下:
![](https://epubservercos.yuewen.com/BF3987/15253389504122706/epubprivate/OEBPS/Images/Figure-P75_3978a.jpg?sign=1739311552-WklhYhKfkYivyk1LRu6A5tNBWyrU2VS8-0-ba2ce19e0ebbd660347f948a95dc226b)
运行结果如下:
![](https://epubservercos.yuewen.com/BF3987/15253389504122706/epubprivate/OEBPS/Images/Figure-P75_3986a.jpg?sign=1739311552-aj7EyD1FDBPBlMYdV50ZlxlcP9b0yips-0-95b27d284f060703c0e8d38578be30d7)