![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=1739703739-1b5ajJsdSb2RGIDkKVkhdJvCizBIPTdr-0-a5eff3a7a2131ea50ee5a03e21ba4f79)
这类函数的返回值是逻辑类型的数据。返回值为“1”,表示该矩阵是某一特定类型的矩阵;返回值为“0”,表示该矩阵不是该特定类型的矩阵。
例2-37:矩阵结构测试函数的使用方法示例。
利用zeros函数生成一个4×4、元素全为0的矩阵A,并判断矩阵A的数据结构。首先在命令行窗口中输入以下代码并得到相应的输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_69_4.jpg?sign=1739703739-UItndMgqardS3CiL3J96SpqpZ4AlkKPO-0-c7dae65ccc2db0aa0e7ef42a930d60f6)
再利用表2-15中的各个函数判断矩阵A的数据结构,依次输入的代码和结果分别如下:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_69_5.jpg?sign=1739703739-Y9DfPhK9HkSbIvduOUBisoRDLwQtltaw-0-734e6ff109cec98d02559265f4580df3)
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_70_1.jpg?sign=1739703739-8BUXhCYKEoqkPW95QaoasVPuGyqQ82eP-0-b66041c2b5844ea085f51df4a257514e)
2.矩阵大小
矩阵的形状信息反映了矩阵的大小,通常又包括以下几方面的内容。
● 矩阵的维数。
● 矩阵各维(如最长维、用户指定的维)的长度。
● 矩阵元素的个数。
针对上述3方面的信息,MATLAB提供了4个函数,分别用于获取矩阵形状的相关信息,如表2-16所示。
表2-16 矩阵形状信息获取函数
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_70_2.jpg?sign=1739703739-kF562z907czkU9bq4VKUIkZVfWlOaZHO-0-75d94bd18699f74d8c5d05fe28f5834e)
例2-38:矩阵形状信息获取函数的使用示例。
下面利用eye函数建立一个5×3的矩阵,输入的程序代码和得到的结果如下:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_70_3.jpg?sign=1739703739-dMn0CO0PKbOKKcO309QRgZdVP0qbZvHo-0-0cf4db64ac63b356c799cc7c33f3e2bb)
下面利用ndims函数获取矩阵A的维数信息:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_70_4.jpg?sign=1739703739-j3AMM9aloOYsodowqJhv4Djk4p9UHMMG-0-2d4170377573e284591841a39524b295)
利用length函数获取矩阵A最长维的长度:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_70_5.jpg?sign=1739703739-8Cki4uJE2iPxxJzbWMUr60Z1FTSVZn2z-0-d34feb0f7099a61fd08d6ce9aaec435c)
利用size函数获取矩阵A各维的长度:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_70_6.jpg?sign=1739703739-whXr96rbBnA8V8ctS2v1ase2UEe3VQt2-0-d96549f0192fa62d7372ed14d1206017)
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_71_1.jpg?sign=1739703739-wlpH55bX8h0u0KAvpu8cU0JYC2XW7KUn-0-5565b7db522239e9c77a32eb44097cfa)
由上述size函数的应用可知:①size函数的返回值可以是分开显示的单个实数变量,也可以是一个行向量;②在size函数的输入参数中增加维度参数可以获取指定维度的长度,其中“1”表示行,“2”表示列。
使用numel函数可以获取矩阵A中元素的个数。例如,在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_71_2.jpg?sign=1739703739-nqyXuvesnV1xd3hPf8mQ6meDeCT2dWcP-0-cb91f6a4d84d305788aea3a0f559136a)
得到的结果如下:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_71_3.jpg?sign=1739703739-ZBQ4BNH6IRO4NYhAlYyrk2zavSWqczGf-0-29b72e033e8ba5a03b34007f70d5be0b)
例2-39:数值与矩阵的算术运算示例。
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_71_4.jpg?sign=1739703739-YZBWvrQMRObMr3ILw1txkpieCiSSAMxN-0-f3a54ad9c23591c3b11e84bb25bd4576)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_71_5.jpg?sign=1739703739-zbY05EokKny2T7KoufrHSKiooILIHsT7-0-55a7330ea1b3fe201de913bd57e1c8d3)
3.矩阵维度
对于空矩阵、标量矩阵、一维矩阵和二维矩阵,MATLAB都将其作为普通二维数组对待。需要特别注意的是,用[]产生的空矩阵作为二维矩阵,但是在高维矩阵中也有空矩阵的概念,此时空矩阵具有多个维度。
MATLAB中提供了ndims函数来计算矩阵维度。
例2-40:计算矩阵维度示例。
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_72_1.jpg?sign=1739703739-0ezYJ9qjy043OAxMlzC3Zckd8Q7WV1cO-0-2fc3a44290a705365da2a21763097041)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_72_2.jpg?sign=1739703739-EetwqPV4JmmSfnRkqPyEEjlcRrgylvLL-0-2ac318f3a94797c6f048bce64a93d61b)
4.矩阵的数据类型
矩阵作为MATLAB的内部数据存储和运算结构,其元素可以是各种各样的数据类型,对应不同数据类型的元素,可以是数值、字符串、元胞、结构体等。MATLAB中提供了一系列关于数据类型的测试函数,如表2-17所示。
表2-17 矩阵数据类型测试函数
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_72_3.jpg?sign=1739703739-bKvTNZVekvq20aYfVuqoe3B58czgo8P9-0-176e340e312b54edacaa96f59c296fa4)
这类函数的返回值也是逻辑类型的数据。返回值为“1”表示是某一特定的数据类型,返回值为“0”表示不是该特定的数据类型。
例2-41:矩阵元素的数据类型的判断示例。
在命令行窗口中依次输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_72_4.jpg?sign=1739703739-Cl3WG3cJ1hVZYLrfA1XsctmmVfQu4XX2-0-0b597589f85ee3ba879f6f44f27aba10)
得到的结果为:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_72_5.jpg?sign=1739703739-xz9VyfCzaBI8zBR5ohOx5lNWcnmLfR7O-0-2434fb9dc1589683bbf07687cb1b7cbe)
建立一个字符串矩阵B并进行判断,程序代码如下:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_72_6.jpg?sign=1739703739-Ian65btXnoDWmwiuPcuwbnxXO4DWyPND-0-34cecbaecd5fb1686f6cedb834670419)
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_73_1.jpg?sign=1739703739-16Drj1TUsX6ue22pKzdxskd8DDn9SKca-0-d89b93c29573d8b6d7e06d6fd196620d)
得到的结果为:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_73_2.jpg?sign=1739703739-dH3Q2nCDeul8rtrQkP3gKEDiV86IvKxz-0-2550274a4ad1ee3ac9083e5d78a55e1d)
例2-42:数据类型判断示例。
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_73_3.jpg?sign=1739703739-5Kh7xnNVyUmoTgS5nkjVqcQk9S0qtgBK-0-3b68a7b6273e716b71b52d2b25e91aa7)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_73_4.jpg?sign=1739703739-kXm390o6V5txbL34WXJVfMQHlfzE19Ho-0-0d52f0441393dd28b0b3ee61d15f89f1)
例2-43:将矩阵A中的实数和复数分开为一个具有实数与复数的矩阵示例。
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_73_5.jpg?sign=1739703739-r3hswWprFicv3ufH7ms0qFWzhV6Hbxt3-0-b10bdd500b3ea7fc23a1a68b1d27a817)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_73_6.jpg?sign=1739703739-hJYSL9SbALRn6igU4VJ1SeB4Hnn0VrIX-0-021f67a80d22960faad5111ae6c9aaa3)
5.矩阵占用的内存
了解矩阵的内存占用情况对于优化MATLAB代码性能是十分重要的。用户可以通过whos命令查看当前工作区中指定变量的所有信息,包括变量名、矩阵大小、内存占用和数据类型等。
例2-44:查看矩阵占用的内存示例。
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_74_1.jpg?sign=1739703739-tEoTUIBcZTSo8UpOVesVmuItY8JYWWch-0-b272c60f974383369b04051904e8ee0c)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_74_2.jpg?sign=1739703739-k0MNQEzDAgUhkDKD2KGfvMNf8V3O5jLW-0-4b69ef60f3b04ef9f0007590a0420279)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_74_3.jpg?sign=1739703739-yAu28qhzmGwcq498s9JoAGzHffx05fGw-0-1cfd5474f8632cd65ca0dde8d5832f87)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_74_4.jpg?sign=1739703739-CXAM920bTA4E293k1TJgzQsIsE7CTcuF-0-e86bb591e8f2ef8ce1644ee7772eda7c)