![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=1739661052-UCSWghEhdj4LhbVilPTnwPxxw0tuyRlC-0-49a230d724359eaf279a2f11fd2b46ba)
这类函数的返回值是逻辑类型的数据。返回值为“1”,表示该矩阵是某一特定类型的矩阵;返回值为“0”,表示该矩阵不是该特定类型的矩阵。
例2-37:矩阵结构测试函数的使用方法示例。
利用zeros函数生成一个4×4、元素全为0的矩阵A,并判断矩阵A的数据结构。首先在命令行窗口中输入以下代码并得到相应的输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_69_4.jpg?sign=1739661052-bTO56f7ZbZcHzYTMRUilxoK9lPPzab3R-0-3e0ea0c708ac73155cc379cf2beffe00)
再利用表2-15中的各个函数判断矩阵A的数据结构,依次输入的代码和结果分别如下:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_69_5.jpg?sign=1739661052-9uO1sopdRA1EHjHpBbEo5xGuhmuntTPV-0-018ba3f42d2595c93d618ce797d711a6)
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_70_1.jpg?sign=1739661052-7R92sfENPJkz1ISulQ7rENVcZvx5yXQe-0-ee28e75b00cc13c19b2ac945a4a0e2db)
2.矩阵大小
矩阵的形状信息反映了矩阵的大小,通常又包括以下几方面的内容。
● 矩阵的维数。
● 矩阵各维(如最长维、用户指定的维)的长度。
● 矩阵元素的个数。
针对上述3方面的信息,MATLAB提供了4个函数,分别用于获取矩阵形状的相关信息,如表2-16所示。
表2-16 矩阵形状信息获取函数
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_70_2.jpg?sign=1739661052-BgLazvgMu1uBX2cK9sFaHZOfqj0FvqOB-0-006001f1641ff74393609c4b5dd880fa)
例2-38:矩阵形状信息获取函数的使用示例。
下面利用eye函数建立一个5×3的矩阵,输入的程序代码和得到的结果如下:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_70_3.jpg?sign=1739661052-nuZ3dSRUvBqvi4T5sGtaPhz1yRrb8ayZ-0-a2aa2cb6ad6ead18ca6ee85a35274bde)
下面利用ndims函数获取矩阵A的维数信息:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_70_4.jpg?sign=1739661052-nciLMoV1nBhBr3dFv5ggRd0tDufxVhH9-0-11019b5413c67c038a64b92bf5990838)
利用length函数获取矩阵A最长维的长度:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_70_5.jpg?sign=1739661052-mWPkdy3icagSr9ijguldsOrxvpW14LDq-0-27f9e77ec311c71871b6397c25a02639)
利用size函数获取矩阵A各维的长度:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_70_6.jpg?sign=1739661052-Q0LXz6dUqRREUnPDom6jY4V65yAB8xUK-0-d93a32f1f017aa9775c5b8faa5a8983b)
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_71_1.jpg?sign=1739661052-lTJwxBQwluzLKzx7BYrMaBtz0QcYiGPO-0-80750e31af63942bd706546fdf01ec7a)
由上述size函数的应用可知:①size函数的返回值可以是分开显示的单个实数变量,也可以是一个行向量;②在size函数的输入参数中增加维度参数可以获取指定维度的长度,其中“1”表示行,“2”表示列。
使用numel函数可以获取矩阵A中元素的个数。例如,在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_71_2.jpg?sign=1739661052-1bRrOEcrWSq8vmc9UHEcSLmj1FF7LfuW-0-5c5ce63108054a2a46a4665c945de0ba)
得到的结果如下:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_71_3.jpg?sign=1739661052-WmT6sTagBSNkmBBiQRNSA7YwL3NHefQs-0-6155d739326f051fda208467f16498fb)
例2-39:数值与矩阵的算术运算示例。
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_71_4.jpg?sign=1739661052-dyTHdCneYvGnC4FjSqfaNArcnnLqNTGN-0-e341d966dde9669d91ee89e0296c155e)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_71_5.jpg?sign=1739661052-y5DJwdiqKzgEFqcZpz6AbzL3okecqXSJ-0-79f5a538b0b2a792c29cc2d652b9576c)
3.矩阵维度
对于空矩阵、标量矩阵、一维矩阵和二维矩阵,MATLAB都将其作为普通二维数组对待。需要特别注意的是,用[]产生的空矩阵作为二维矩阵,但是在高维矩阵中也有空矩阵的概念,此时空矩阵具有多个维度。
MATLAB中提供了ndims函数来计算矩阵维度。
例2-40:计算矩阵维度示例。
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_72_1.jpg?sign=1739661052-Dvhgb8Vg3WNas2AM6qaNG8sKG765Ospt-0-7d01ddd023c0449519889627953a60d3)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_72_2.jpg?sign=1739661052-uxw3bJGytDcjsQCZzuvnUTguUzCBklMf-0-100c8da25f945649bd4ca2b50f09907e)
4.矩阵的数据类型
矩阵作为MATLAB的内部数据存储和运算结构,其元素可以是各种各样的数据类型,对应不同数据类型的元素,可以是数值、字符串、元胞、结构体等。MATLAB中提供了一系列关于数据类型的测试函数,如表2-17所示。
表2-17 矩阵数据类型测试函数
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_72_3.jpg?sign=1739661052-s5mOXED11ZUJrEBfLXv9Xm6FkaDRWp3F-0-ee17c94b66e5cf2a6a13c4056b039828)
这类函数的返回值也是逻辑类型的数据。返回值为“1”表示是某一特定的数据类型,返回值为“0”表示不是该特定的数据类型。
例2-41:矩阵元素的数据类型的判断示例。
在命令行窗口中依次输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_72_4.jpg?sign=1739661052-etgJZxT4Bdi9grWYJPX14FPjJt48ledM-0-96746b0108a5570a9c8a2e54145af34f)
得到的结果为:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_72_5.jpg?sign=1739661052-98JMMDGv8dXyInYqe9bas7T42AaBRd44-0-a80fe06e541fb1de00cd9e1f757f5465)
建立一个字符串矩阵B并进行判断,程序代码如下:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_72_6.jpg?sign=1739661052-lvOvKHS1SDODWbHGntltGHoELgGTjCrM-0-9ccb8072cddcd28de2c5d509c327a03e)
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_73_1.jpg?sign=1739661052-Kn3FKrcK1zJ3g7AThjP3ueIfOPNTkYRY-0-dc48cab75f58a3338ffce25c20e00402)
得到的结果为:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_73_2.jpg?sign=1739661052-kkXozTqaeknJ0woCtnbvOXKpDTlZ1fLZ-0-ba5de574ad4b6a432198f0a80a0b038d)
例2-42:数据类型判断示例。
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_73_3.jpg?sign=1739661052-xoMc0mjENaf2L5d4izyyFTqzuRDymWVQ-0-848be0f72a95793282e8c4952544d707)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_73_4.jpg?sign=1739661052-XPtfFU1d73n6VySE9o4aLmAqUiccHY9k-0-590a14c19a8092bbe2bd3396ff77b529)
例2-43:将矩阵A中的实数和复数分开为一个具有实数与复数的矩阵示例。
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_73_5.jpg?sign=1739661052-TfoT7hElewcdIogPGtcuG65khdfpqXVD-0-e5b625eed9e845b77411896ae38fdbc0)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_73_6.jpg?sign=1739661052-trMYcAQlg0Rfcsl1nvL2y1U9fue3zzVL-0-c598cfcda9d7df529216777e541b6017)
5.矩阵占用的内存
了解矩阵的内存占用情况对于优化MATLAB代码性能是十分重要的。用户可以通过whos命令查看当前工作区中指定变量的所有信息,包括变量名、矩阵大小、内存占用和数据类型等。
例2-44:查看矩阵占用的内存示例。
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_74_1.jpg?sign=1739661052-j9ZskbKxpwuCdjxvTPFhlftS1cVn1RL3-0-df947a06b30bfefcb6d1ec7b9fb134b4)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_74_2.jpg?sign=1739661052-0PyMeTw79Az4Vj2dvEuIAqJPQm9k9Si3-0-dc6a62fcd863651e2b016262bb71801e)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_74_3.jpg?sign=1739661052-8tBYW2jVPfuuLBlydS1m8NRQtajXh5cn-0-b4df6e5da333a2268456e78179e83ae0)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_74_4.jpg?sign=1739661052-v8PvkICYkaXCRGLfXcnDbybGJ3Qz0z7o-0-9838d3c7d29a09dedd640d70a10ed523)