![MATLAB R2022a完全自学一本通](https://wfqqreader-1252317822.image.myqcloud.com/cover/854/47548854/b_47548854.jpg)
2.2.5 矩阵信息的获取
矩阵信息主要包括矩阵结构、矩阵大小、矩阵维度、矩阵的数据类型及矩阵占用的内存等。
1.矩阵结构
矩阵的结构是指矩阵子元素的排列方式。MATLAB提供了各种测试函数,如表2-15所示。
表2-15 矩阵结构测试函数
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_69_3.jpg?sign=1739316676-aI5YR0cGFf4UfzvHxZuw3b6IN74XVjbH-0-5c85710ec555367f90bb70c1fbe2d09a)
这类函数的返回值是逻辑类型的数据。返回值为“1”,表示该矩阵是某一特定类型的矩阵;返回值为“0”,表示该矩阵不是该特定类型的矩阵。
例2-37:矩阵结构测试函数的使用方法示例。
利用zeros函数生成一个4×4、元素全为0的矩阵A,并判断矩阵A的数据结构。首先在命令行窗口中输入以下代码并得到相应的输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_69_4.jpg?sign=1739316676-eSOUOGlpCmAHKDW5JBlDl1AOiyIAL9lY-0-91fe135203b506c6a40ea7a0107d5806)
再利用表2-15中的各个函数判断矩阵A的数据结构,依次输入的代码和结果分别如下:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_69_5.jpg?sign=1739316676-G2KdsFwK6VCdua88trvavGY4aqPMPcsZ-0-cb60eb5cfaf09d603184df4898926b26)
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_70_1.jpg?sign=1739316676-N8tLqRqVBmWpVmpWJ9jaXVgSYZ8tNrPY-0-249bcf42735f35565acc6e167afc6c79)
2.矩阵大小
矩阵的形状信息反映了矩阵的大小,通常又包括以下几方面的内容。
● 矩阵的维数。
● 矩阵各维(如最长维、用户指定的维)的长度。
● 矩阵元素的个数。
针对上述3方面的信息,MATLAB提供了4个函数,分别用于获取矩阵形状的相关信息,如表2-16所示。
表2-16 矩阵形状信息获取函数
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_70_2.jpg?sign=1739316676-wYx57q5yULuuhlK1V7JoFe4WZDUbxufd-0-723ffb3f6919854ce9f3e257e3d25999)
例2-38:矩阵形状信息获取函数的使用示例。
下面利用eye函数建立一个5×3的矩阵,输入的程序代码和得到的结果如下:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_70_3.jpg?sign=1739316676-jdqGvbbAk1DN9FibNb9eHySsywot14jX-0-4025e2f9489384ed31f93260f96ba638)
下面利用ndims函数获取矩阵A的维数信息:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_70_4.jpg?sign=1739316676-bMatYN0RNouJFcSgVJsQ0sKN0KynocJR-0-d52c5ec1bfd3211e631c97988a3afb8a)
利用length函数获取矩阵A最长维的长度:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_70_5.jpg?sign=1739316676-0JEpMwnXtWhJRwEAGJcxr0kiOUEc6qv2-0-b16a6019c20b0ba13328de2f9d311169)
利用size函数获取矩阵A各维的长度:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_70_6.jpg?sign=1739316676-aWJtS5xAx0SeFPxzVUBa1DTAMDzs29KM-0-0b912e7bf2e7a913a72559e97f534e0a)
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_71_1.jpg?sign=1739316676-SgLjACDKV4NUSC1863905YLyNcdUCF2X-0-4cee1b2d2bd8d799db868b788afde6b1)
由上述size函数的应用可知:①size函数的返回值可以是分开显示的单个实数变量,也可以是一个行向量;②在size函数的输入参数中增加维度参数可以获取指定维度的长度,其中“1”表示行,“2”表示列。
使用numel函数可以获取矩阵A中元素的个数。例如,在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_71_2.jpg?sign=1739316676-XVbGGeO5TaKDScRFPn0IZ0FQZogUDI8K-0-be84e9f6440f7a5289a940244e26845a)
得到的结果如下:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_71_3.jpg?sign=1739316676-yqvR4bpiFpdnGEWtCtaqmYyenlvJ3jHR-0-4eb0e06a519a3d85e429cabefe64f8ef)
例2-39:数值与矩阵的算术运算示例。
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_71_4.jpg?sign=1739316676-re2GyMCksGWiRO5T78jCTKChjYjaU0NG-0-ae037509d5607659565bbeaec745c16b)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_71_5.jpg?sign=1739316676-7cWtAbECoLPToBqTqAGgr3jkefivY53n-0-2e10dc21a3caf6920ec4ab3a110b1244)
3.矩阵维度
对于空矩阵、标量矩阵、一维矩阵和二维矩阵,MATLAB都将其作为普通二维数组对待。需要特别注意的是,用[]产生的空矩阵作为二维矩阵,但是在高维矩阵中也有空矩阵的概念,此时空矩阵具有多个维度。
MATLAB中提供了ndims函数来计算矩阵维度。
例2-40:计算矩阵维度示例。
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_72_1.jpg?sign=1739316676-ti1FIGe58R5DoxA2FZeG1aj27CnhdOtP-0-0a8e755bd8e7f3d7b144ecfa09169df0)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_72_2.jpg?sign=1739316676-ge5Dd1gv33bIAkUWh4ldMuEQbUp8FhFC-0-a48a9d62eae511ee304ec77ef91d7f7a)
4.矩阵的数据类型
矩阵作为MATLAB的内部数据存储和运算结构,其元素可以是各种各样的数据类型,对应不同数据类型的元素,可以是数值、字符串、元胞、结构体等。MATLAB中提供了一系列关于数据类型的测试函数,如表2-17所示。
表2-17 矩阵数据类型测试函数
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_72_3.jpg?sign=1739316676-OTyNvlbrpeummlERmuFTub5bH4FBPjpQ-0-4d480ce584d9e723018131ec88eb8597)
这类函数的返回值也是逻辑类型的数据。返回值为“1”表示是某一特定的数据类型,返回值为“0”表示不是该特定的数据类型。
例2-41:矩阵元素的数据类型的判断示例。
在命令行窗口中依次输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_72_4.jpg?sign=1739316676-GjkrHvYsBsRKLDCfNsLtEvsB3QbDdPap-0-d0d20992667f8bb445ee833bdc4ec38e)
得到的结果为:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_72_5.jpg?sign=1739316676-KAKC19wXajpABqXmbe9SzaMCEhWAB4Tl-0-d9d669f30aecfc47e0b771f1e58605de)
建立一个字符串矩阵B并进行判断,程序代码如下:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_72_6.jpg?sign=1739316676-1oJzxCMqIAVcKgqIHf1UYjUDsBICFkB0-0-3ad0a0acc00597b7e46a6606568aed22)
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_73_1.jpg?sign=1739316676-RweU6pNpn4tErMeNaAVDHrkTl2oQIQZ5-0-a5f00959dd8561fb0ced344417f7612d)
得到的结果为:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_73_2.jpg?sign=1739316676-Vtvl8mKEFg5APde2APZybWosJDNcDKIu-0-f91e17952c15ef06c98ff36031eb1b3d)
例2-42:数据类型判断示例。
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_73_3.jpg?sign=1739316676-X4poeVmeGR0w4QjKcor8erfQNDhUrSCC-0-550a211311ca29ae871e92351e345286)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_73_4.jpg?sign=1739316676-AppcRjwjgXThcdS57MW7ds3EQr0nnaXN-0-ad4057a59479b8ead63a4aa6800c2ac0)
例2-43:将矩阵A中的实数和复数分开为一个具有实数与复数的矩阵示例。
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_73_5.jpg?sign=1739316676-m28xYJvQqXXWLlcFBbrfRfdE2rTg2PVO-0-18662f59404957d07ffc9647ace30f70)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_73_6.jpg?sign=1739316676-lcRtKRCftrL0ydPdMoV8IbSiJTgRI60k-0-1d6741655e2e6d13cef4bad9bd034256)
5.矩阵占用的内存
了解矩阵的内存占用情况对于优化MATLAB代码性能是十分重要的。用户可以通过whos命令查看当前工作区中指定变量的所有信息,包括变量名、矩阵大小、内存占用和数据类型等。
例2-44:查看矩阵占用的内存示例。
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_74_1.jpg?sign=1739316676-lT1yiN5lghuxZsl2jFuv7cvWH8WW1AzX-0-1c3a04cb77b9c7f4ada599ab9979b012)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_74_2.jpg?sign=1739316676-XfkG83jN1PvbBz7uBSuiJSWwDiwsqHJR-0-772ca7683b4de1bf1303e925ccd83f96)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_74_3.jpg?sign=1739316676-hzRBngVdJ1Dm0snP1Q1HWZc0PUFPrDoQ-0-9f864d9a40b3cf9703a6749df505f0a1)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_74_4.jpg?sign=1739316676-jDtbSexm3OiHliT4STluWrYZYoAnsEGY-0-9483461b2ae8a9494f928b307c70665b)