![MATLAB R2020a从入门到精通(升级版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/74/38507074/b_38507074.jpg)
7.4 字符串与数值的转换
在很多情况下,需要把一个数值数组转换成一个字符串,或者把一个字符串转换成一个数值数组。MATLAB中提供的一系列函数可以完成这些操作。
7.4.1 大小写转换
upper()函数和lower()函数分别把一个字符串中所有的字母转换为大写和小写。具体示例如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_44.jpg?sign=1738923295-KfdoJcQDveGzjYJXC7gTeqKuBj5CfJnd-0-f97a204455fda8930b1ca7c7d3f52587)
注 意
在进行大小写转换时,数字和符号不受影响。
7.4.2 将字符串转换为数字
MATLAB中把由数字组成的字符串转换为数字要使用eval()函数。例如,将字符串“3.141592”转换为数字的示例如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_45.jpg?sign=1738923295-vTluhH5qhQwH0T1A0YgjaUNReHtxl34u-0-0cbc3c19392ac52013f3139306a103a3)
也可以使用sscanf()函数把字符串转换为数字。sscanf()函数根据格式化转义字符将字符串转换为相应的数字,此函数最简单的形式如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_46.jpg?sign=1738923295-4bdPvtIegprZRUgVWOwb2IkafWrafJtg-0-f5a080ad7b8e6cf809ca82d314054422)
其中,string是要转换的字符串,format是相应的转义字符。sscanf()函数比较普通的转义序列是“%d”和“%g”,它们分别代表输出为整数和浮点数。sscanf()函数的应用如下所示:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_47.jpg?sign=1738923295-yogpeSyqhgi1YWmULRSa3TGr1PO3qbUp-0-6b96a3f1da9eb801bab643872c181dc7)
7.4.3 将数字转换为字符串
MATLAB中有许多字符串/数字转换函数可以把数字转换为相应的字符串,这里只列举num2str()函数和int2str()函数。考虑如下所示的标量x:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_48.jpg?sign=1738923295-MXlEPVeNU2CsKea9Z0QQwuW7gns18y0b-0-84694f0110d18a889e2370bf9d30fc41)
在默认情况下,MATLAB把x作为一个1×1的double数组,它的值为5317。int2str(integer to string)函数把这个标量转换为1×4的字符数组,包含字符串“5317”。
具体示例如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_49.jpg?sign=1738923295-pVUN5DDskoYdQbkRNzhN4FzX06yWeuGq-0-e73854bd3e48d5c46aee953d6bc3c25e)
num2str()函数为输出字符串的格式提供了更多的控制。第2个可选择的参数可以对输出字符串的数字个数进行设置或指定一个实际格式。
具体示例如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_50.jpg?sign=1738923295-PklseUoOsT5FFRa70G55BS7scLOHKaxO-0-39580e5670a242c4b2b224174be1828b)
int2str()函数和num2str()函数对作图标签是非常有用的。使用num2str()函数生成图像标签的示例如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_51.jpg?sign=1738923295-L98sAM3MouUOiUs5Js8PwA9YvaJZ6B8S-0-0b2b1116f4d01353490ee2588e3a7077)
还有一些转换函数可以把数字值由十进制转换为另一种数制,如二进制或十六进制。使用dec2hex()函数可以把一个十进制数转换为相应的十六进制字符串。此类函数还有hex2num()、hex2dec()、bin2dec()、dec2bin()、base2dec(),可以通过MATLAB的帮助文档来获取这些函数的作用和使用方法。
MATLAB中的mat2str()函数可以把一个数组转换为相应的MATLAB运算字符串,这个字符串可以是eval()函数的输入,eval()函数对这个字符串的运算与直接在“命令行窗口”中输入的效果是一样的。例如,定义如下一个数组:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_52.jpg?sign=1738923295-zENcQAyFcjaIgr02GMHJFhnoiy8xJ6tA-0-dfa4f0d1fc0e30ff0367ce592e407563)
运行结果如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_53.jpg?sign=1738923295-1YEzMjkKJcnRPlKmXFvPOt7MAeD5tyHG-0-40b80ae46e7be04aaf42aad8ca98bac7)
另外,MATLAB中的sprintf()函数等价于fprintf()函数,唯一的不同之处是它的输出是一个字符串。sprintf()函数完全支持对字符串的格式化操作。
具体示例如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_54.jpg?sign=1738923295-BYfspbqbGHHA4c9vL3letvTHf5RrYDFJ-0-5abb4db942a11ca6ff532021c122a06f)
在图像中,使用这些函数创建复杂的标题或标签非常有用。
可以把数值转换为字符串的函数如表7-3所示。
表7-3 可以把数值转换为字符串的函数
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_55.jpg?sign=1738923295-to6I7aNfM8gPM0Oxkhe4BivexrWvp7ET-0-936cd4c082db90c9c92059007874655f)
可以把字符串转换为数值的函数如表7-4所示。
表7-4 可以把字符串转换为数值的函数
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt008_56.jpg?sign=1738923295-7Esvvdc2B7fuNlb5aK5z8kxCWdxrIgkG-0-9229bfc51bf85c53203808b79eae7386)