![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=1739045040-0hwXIx1856fGV0KgjSGqRxxUiy9mM9SN-0-a1fee40e55999579c477a9685b21c075)
这类函数的返回值是逻辑类型的数据。返回值为“1”,表示该矩阵是某一特定类型的矩阵;返回值为“0”,表示该矩阵不是该特定类型的矩阵。
例2-37:矩阵结构测试函数的使用方法示例。
利用zeros函数生成一个4×4、元素全为0的矩阵A,并判断矩阵A的数据结构。首先在命令行窗口中输入以下代码并得到相应的输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_69_4.jpg?sign=1739045040-LbcnakkdmonLcHw41bH00Wag3bSWvUm7-0-cc1b6177d8952b92deb13cb8e7fb2659)
再利用表2-15中的各个函数判断矩阵A的数据结构,依次输入的代码和结果分别如下:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_69_5.jpg?sign=1739045040-S0LYcdLZK19Dr2FRvxLpjUvERkcNTyJ5-0-449c816429c664c6b942806a2ab1e398)
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_70_1.jpg?sign=1739045040-FdhpfxzgupaQSBN4TQiIf2QTdrfTwfbn-0-d827f3c6a7f09c02287e36c82fe5be6f)
2.矩阵大小
矩阵的形状信息反映了矩阵的大小,通常又包括以下几方面的内容。
● 矩阵的维数。
● 矩阵各维(如最长维、用户指定的维)的长度。
● 矩阵元素的个数。
针对上述3方面的信息,MATLAB提供了4个函数,分别用于获取矩阵形状的相关信息,如表2-16所示。
表2-16 矩阵形状信息获取函数
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_70_2.jpg?sign=1739045040-U7aoLZDdWkxWAP5qeFKGHrDmL9vXbjOg-0-ee4e65d300a13ad707d5d65a95e48629)
例2-38:矩阵形状信息获取函数的使用示例。
下面利用eye函数建立一个5×3的矩阵,输入的程序代码和得到的结果如下:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_70_3.jpg?sign=1739045040-akrlVuhBaxJVXYMepTIUdZHUR1eIqDft-0-19b8f63ad0054fea84d9b4488b37c01d)
下面利用ndims函数获取矩阵A的维数信息:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_70_4.jpg?sign=1739045040-tu1LUbmA4eT2IGudaprWGsvh5oGFPDv5-0-dae13d41afdfd8270d98008d2641be93)
利用length函数获取矩阵A最长维的长度:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_70_5.jpg?sign=1739045040-SyoJwMt2djRGXPEbZ2Ve8jhHdBTDaslF-0-931d84353657646629cf43c88fbfc242)
利用size函数获取矩阵A各维的长度:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_70_6.jpg?sign=1739045040-mBE0waV4iH8J9KgEIGq4iPNCGlvaZdFD-0-4a75c8dfcfd987bc7a6c8e6fc91d1cda)
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_71_1.jpg?sign=1739045040-maYQvMs5ZmZ287jV8Lx7WhKeh2zWB93q-0-2fbfa6d3ab9b1030600c3dbd355e1493)
由上述size函数的应用可知:①size函数的返回值可以是分开显示的单个实数变量,也可以是一个行向量;②在size函数的输入参数中增加维度参数可以获取指定维度的长度,其中“1”表示行,“2”表示列。
使用numel函数可以获取矩阵A中元素的个数。例如,在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_71_2.jpg?sign=1739045040-i6tDcrWmYW6CkbiUQzUDz27y2TkdjKt6-0-53d9e3f9adf0bb9e9b1cfb865c1ed981)
得到的结果如下:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_71_3.jpg?sign=1739045040-miXvZUuVBO0RP8GlN8wxRCscSeV2JgyC-0-34c36288e84cf3036ef8903d807bf541)
例2-39:数值与矩阵的算术运算示例。
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_71_4.jpg?sign=1739045040-eySUS4fITqcTULGL9OV49svAXeXJntn7-0-15b60f7bacb7720ade7c4114f29fdfaa)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_71_5.jpg?sign=1739045040-sRHXQIxh9jKtWCasL0FaxthO61pQQokR-0-c7b2f2859e09938117cb6dfcbfebd9e3)
3.矩阵维度
对于空矩阵、标量矩阵、一维矩阵和二维矩阵,MATLAB都将其作为普通二维数组对待。需要特别注意的是,用[]产生的空矩阵作为二维矩阵,但是在高维矩阵中也有空矩阵的概念,此时空矩阵具有多个维度。
MATLAB中提供了ndims函数来计算矩阵维度。
例2-40:计算矩阵维度示例。
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_72_1.jpg?sign=1739045040-Nqx2wbe5aNA1wF5NhhnyqX7mjGAwArxG-0-e55cc53b55b3cbd4f6a2ba2c973734f4)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_72_2.jpg?sign=1739045040-3oZzHoInmxRtFK9Jb0EwECSmdBmm0eEJ-0-e553342813b909ebf8007ee1225f71ae)
4.矩阵的数据类型
矩阵作为MATLAB的内部数据存储和运算结构,其元素可以是各种各样的数据类型,对应不同数据类型的元素,可以是数值、字符串、元胞、结构体等。MATLAB中提供了一系列关于数据类型的测试函数,如表2-17所示。
表2-17 矩阵数据类型测试函数
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_72_3.jpg?sign=1739045040-rn6LYWgpBxogFeGl4UZ7syCCDbhFDeTV-0-1e772618ac1c2100049e6f170a5bbe7b)
这类函数的返回值也是逻辑类型的数据。返回值为“1”表示是某一特定的数据类型,返回值为“0”表示不是该特定的数据类型。
例2-41:矩阵元素的数据类型的判断示例。
在命令行窗口中依次输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_72_4.jpg?sign=1739045040-rI1qHd4xI3s7GzOCLKhn1Yu6mhpfx6iI-0-de5e20f6576812d3179d934d4312c643)
得到的结果为:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_72_5.jpg?sign=1739045040-TyJN1ZG2MsVqvzrE8zxAkhjcljqIgWGz-0-05926fc08722db2145df2b87d34d2f1a)
建立一个字符串矩阵B并进行判断,程序代码如下:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_72_6.jpg?sign=1739045040-iXuS0GWFXJeyJA7wxA0P2SnStgWw7VNe-0-d1f4b05c6b2ad0094492d97b5055055f)
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_73_1.jpg?sign=1739045040-lhAual6BANI9Pbpcee2V76zcUeLekUiO-0-3cd5064ccac1313c9622a61c759b223d)
得到的结果为:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_73_2.jpg?sign=1739045040-G2tkRguVKabe7XujGtrSq0GgIUF9yNLA-0-3d940f0e1d07dbf026e327eb9fd727ff)
例2-42:数据类型判断示例。
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_73_3.jpg?sign=1739045040-xggwzphRldDPA6J6sATP9LV0zfDv3PZ4-0-58b640cb28e5a4cd1be3593ea806af56)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_73_4.jpg?sign=1739045040-ZaUOWAGXkaEJsbxWyaeswA9vTkDWjtEr-0-96a40bc3292dee0a88fb7df7d055afe2)
例2-43:将矩阵A中的实数和复数分开为一个具有实数与复数的矩阵示例。
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_73_5.jpg?sign=1739045040-13Z7Wa6Thzjc7sbOo1JzrtRcb0y3ZsUI-0-daff014ab2295b10a5484a18554da362)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_73_6.jpg?sign=1739045040-fRglRhAznHx5ABsKF0K5E6VLuXiYUw5x-0-10f08b7341bf2426bbbe56d3152db848)
5.矩阵占用的内存
了解矩阵的内存占用情况对于优化MATLAB代码性能是十分重要的。用户可以通过whos命令查看当前工作区中指定变量的所有信息,包括变量名、矩阵大小、内存占用和数据类型等。
例2-44:查看矩阵占用的内存示例。
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_74_1.jpg?sign=1739045040-0yzEevSXHoWQ63TWnOijPHTVZgfn2HnQ-0-fb57342c076ab461213b4ed04bbeb7d5)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_74_2.jpg?sign=1739045040-GjTZGdss6CArhPyv1QamJNHi8NTedJzs-0-8da655fdebddabfbaa0ca39b92eebacb)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_74_3.jpg?sign=1739045040-vF30Ag7nAw58BdOLQcuQGh3WjlmSs2h7-0-d68125091f229a1a9aced162edb3e896)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_74_4.jpg?sign=1739045040-Zg2ARrNFLytg39nr5WvnPdP5PY5jUT9f-0-dea1b4c645478adab76e197b016f4abe)