![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=1739689917-lrkvvOfSMDK0Ob8aWOzjUAWQw1uo7FQs-0-60e0e39ac154a7b3a8310389eb06ce29)
这类函数的返回值是逻辑类型的数据。返回值为“1”,表示该矩阵是某一特定类型的矩阵;返回值为“0”,表示该矩阵不是该特定类型的矩阵。
例2-37:矩阵结构测试函数的使用方法示例。
利用zeros函数生成一个4×4、元素全为0的矩阵A,并判断矩阵A的数据结构。首先在命令行窗口中输入以下代码并得到相应的输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_69_4.jpg?sign=1739689917-dIoqKl6jWqNVC6EjtvSqMl7GYeopQ3fV-0-9a05df785cd49bbfcac8a6f54e09ad21)
再利用表2-15中的各个函数判断矩阵A的数据结构,依次输入的代码和结果分别如下:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_69_5.jpg?sign=1739689917-TCBlspYgHkqNmiadwamxUWW3Z8MDxo7t-0-b2fff7864f53e2b5162f8c8183d9dec2)
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_70_1.jpg?sign=1739689917-Ann7nGomDG6gHgdrlbLHvJmSFW9Q0XxZ-0-cd731b851e900679f86016a0d05b02c3)
2.矩阵大小
矩阵的形状信息反映了矩阵的大小,通常又包括以下几方面的内容。
● 矩阵的维数。
● 矩阵各维(如最长维、用户指定的维)的长度。
● 矩阵元素的个数。
针对上述3方面的信息,MATLAB提供了4个函数,分别用于获取矩阵形状的相关信息,如表2-16所示。
表2-16 矩阵形状信息获取函数
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_70_2.jpg?sign=1739689917-Hg2aKdGNK6Bk8NcVe8hha3LhUZe8pvLw-0-c7f618bfc6703b6584add6fc5101455b)
例2-38:矩阵形状信息获取函数的使用示例。
下面利用eye函数建立一个5×3的矩阵,输入的程序代码和得到的结果如下:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_70_3.jpg?sign=1739689917-81p26dGKu3zlx6FNuixjgDAibrBFkQT9-0-4f0ba652a914f6b13b359b32c7c9a783)
下面利用ndims函数获取矩阵A的维数信息:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_70_4.jpg?sign=1739689917-KugRZ4NNzOq1tGMxH6UZeoi5fpKwUh0x-0-042bb4c3d7584ff6faab459dd300a8a8)
利用length函数获取矩阵A最长维的长度:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_70_5.jpg?sign=1739689917-Q0BcUUmm16g6ukKQL7bfqPEt6LH14nsi-0-a2e8c58d39ef2f33f04a060ce2e37219)
利用size函数获取矩阵A各维的长度:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_70_6.jpg?sign=1739689917-jW6vTdvg0qdDvW7G1aC4DBwOQ8KFV3xG-0-1e29525b7305100dfb6bf7504f72c993)
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_71_1.jpg?sign=1739689917-C2tdUgjHpqIFnWcTUXNyoKKNEXMxbhXj-0-acfd378c6d33ec7344bddb3ace7f36f6)
由上述size函数的应用可知:①size函数的返回值可以是分开显示的单个实数变量,也可以是一个行向量;②在size函数的输入参数中增加维度参数可以获取指定维度的长度,其中“1”表示行,“2”表示列。
使用numel函数可以获取矩阵A中元素的个数。例如,在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_71_2.jpg?sign=1739689917-j1ToFyH3uTiVmEBd2dQFZpGN3qfvYYkL-0-e4a589a8691b5ac46f11eeb7dde5d896)
得到的结果如下:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_71_3.jpg?sign=1739689917-AoemKMZc46L6SGGGkRK6t0swfqvLvdRf-0-7cb4452a87e716f6292aab63f2c2ce60)
例2-39:数值与矩阵的算术运算示例。
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_71_4.jpg?sign=1739689917-W5u8XTrzN7J3lJrHrc1zzjseH5u4Re8U-0-a3abbfe5c2ad2f9b4f4d6fe6894f8939)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_71_5.jpg?sign=1739689917-wAFYqmqzPPoePM4l3LK7vU4XIPCevxCb-0-18cad2beab8e714b124dc3e74ba36f74)
3.矩阵维度
对于空矩阵、标量矩阵、一维矩阵和二维矩阵,MATLAB都将其作为普通二维数组对待。需要特别注意的是,用[]产生的空矩阵作为二维矩阵,但是在高维矩阵中也有空矩阵的概念,此时空矩阵具有多个维度。
MATLAB中提供了ndims函数来计算矩阵维度。
例2-40:计算矩阵维度示例。
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_72_1.jpg?sign=1739689917-KovcjFk191P7Vydt4M4c7g55qzdlAB4n-0-962f5401b3ca437fffec494928d62245)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_72_2.jpg?sign=1739689917-pJd0aQjEzUwjnFUBvZRkesSNCjttcP1D-0-0d9f2a2bd41ae88164925dd493f1c94f)
4.矩阵的数据类型
矩阵作为MATLAB的内部数据存储和运算结构,其元素可以是各种各样的数据类型,对应不同数据类型的元素,可以是数值、字符串、元胞、结构体等。MATLAB中提供了一系列关于数据类型的测试函数,如表2-17所示。
表2-17 矩阵数据类型测试函数
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_72_3.jpg?sign=1739689917-dThiQcMWYcCmtxgLPKkn8C7gcpn9BbGM-0-2afdb353300b23ef630bfcf10a7c5ec5)
这类函数的返回值也是逻辑类型的数据。返回值为“1”表示是某一特定的数据类型,返回值为“0”表示不是该特定的数据类型。
例2-41:矩阵元素的数据类型的判断示例。
在命令行窗口中依次输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_72_4.jpg?sign=1739689917-Zq4daOPqhoGjWYtqys9omxpUDrKSgEVr-0-57bd6667f414fab0e3c5b509e2ea6bef)
得到的结果为:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_72_5.jpg?sign=1739689917-cHtVtu5G8xSKRFFhINzSostFjMMwD4hc-0-d64cbb832dfb9dd676bb24f3ec526ca1)
建立一个字符串矩阵B并进行判断,程序代码如下:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_72_6.jpg?sign=1739689917-1eOyA8tB1RLBEleCMtLUYCFz4QNYspM5-0-201518d78278d0ee5eff13431fc3f1d0)
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_73_1.jpg?sign=1739689917-74HdkOcjnMRbQlJ8Mu1RHh5aVr1mklF4-0-ef0290e93450db5e3cb798dc2bc25840)
得到的结果为:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_73_2.jpg?sign=1739689917-iDqF3wejjzntQEpX1UMQyzQIeJ3bt4mx-0-c434cab823e0cb7b9f5274476537f399)
例2-42:数据类型判断示例。
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_73_3.jpg?sign=1739689917-PC49yG0iFotVGIyeNJ2iT5JqY3Dzu1vq-0-c5332b06c4004d7289cbc0ac26678f8e)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_73_4.jpg?sign=1739689917-avVRU4Fb2pykCbV00TcF0sO7uYP6c8A3-0-ef974e019cffada663fd4a50023e3ae1)
例2-43:将矩阵A中的实数和复数分开为一个具有实数与复数的矩阵示例。
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_73_5.jpg?sign=1739689917-Zz57MuBHwuIsbMdDuA3l2mQkFJ5znS9i-0-677678714bd69a55596851f1c33e9de5)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_73_6.jpg?sign=1739689917-rIgK88bVFJoSmoMXHJPcQgMqYW7An5Yk-0-36fe15e6931c879f8862a405f1176be6)
5.矩阵占用的内存
了解矩阵的内存占用情况对于优化MATLAB代码性能是十分重要的。用户可以通过whos命令查看当前工作区中指定变量的所有信息,包括变量名、矩阵大小、内存占用和数据类型等。
例2-44:查看矩阵占用的内存示例。
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_74_1.jpg?sign=1739689917-48esKzs4ZnvJzN1kChvJBTdTgT8VmQdO-0-a4ad2a85e4a9626145db8ea0bdd9ffbe)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_74_2.jpg?sign=1739689917-MAni7CEeW50D3UdxijMLSW5qr3cWOoxH-0-4404b7d2ffeff523fbad3c1edcd625e3)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_74_3.jpg?sign=1739689917-FmRHuUsuNuFQZc7hhlGEja6yDeQvvU2h-0-a51f63a84264976047141466c56aa6b8)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_74_4.jpg?sign=1739689917-XRzMDdqDBqyZ9zYLzZ0xCR2u12jiOEVU-0-ae2b81568ba0feb9dabc2074fb14fef7)