![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=1738872977-Ds0OhaV3X0Q2oU2bXl0SmjhKWgvhgUtZ-0-fe945c6f8cd4d942933883807169fedf)
这类函数的返回值是逻辑类型的数据。返回值为“1”,表示该矩阵是某一特定类型的矩阵;返回值为“0”,表示该矩阵不是该特定类型的矩阵。
例2-37:矩阵结构测试函数的使用方法示例。
利用zeros函数生成一个4×4、元素全为0的矩阵A,并判断矩阵A的数据结构。首先在命令行窗口中输入以下代码并得到相应的输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_69_4.jpg?sign=1738872977-WPOaP3MazGbiPMEs0Ggvx4yxmV2CPJKU-0-fe728b2a7a1d57c6ffc3d58614923dff)
再利用表2-15中的各个函数判断矩阵A的数据结构,依次输入的代码和结果分别如下:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_69_5.jpg?sign=1738872977-JdJxoDEGmg9gKSkXJ06XgMyf8oKZHEmY-0-93e88b214c8d35b107762e0f4de1c224)
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_70_1.jpg?sign=1738872977-PxcT72kcXJOCEAPHOgievi8KOKGnlIDO-0-15e2cda639324f0d653f1ee9db6fcdf1)
2.矩阵大小
矩阵的形状信息反映了矩阵的大小,通常又包括以下几方面的内容。
● 矩阵的维数。
● 矩阵各维(如最长维、用户指定的维)的长度。
● 矩阵元素的个数。
针对上述3方面的信息,MATLAB提供了4个函数,分别用于获取矩阵形状的相关信息,如表2-16所示。
表2-16 矩阵形状信息获取函数
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_70_2.jpg?sign=1738872977-JbeILKUvWqIRRfmo3LI5d1eOG14tnF2b-0-654517f29415cecb61c7d3f7c7a3e94d)
例2-38:矩阵形状信息获取函数的使用示例。
下面利用eye函数建立一个5×3的矩阵,输入的程序代码和得到的结果如下:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_70_3.jpg?sign=1738872977-24S8tUzx8O6u9dVLfq568zkrBCj96os0-0-2923c48176bb2589ca49a4f6d3bbcfdd)
下面利用ndims函数获取矩阵A的维数信息:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_70_4.jpg?sign=1738872977-qmc89LDdRTM9i7kilqWiHnfjv5a5qd5B-0-ba2efa9ab72e60a1733f54386c214336)
利用length函数获取矩阵A最长维的长度:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_70_5.jpg?sign=1738872977-9zQ98jpAvf4nInLee7ZR1AVUudnbzdqK-0-4d646fc3492761533378b7f331fcddd8)
利用size函数获取矩阵A各维的长度:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_70_6.jpg?sign=1738872977-1BDtVI0pAZR4lnlzSQOrbCgXwuGdbFb7-0-feacfa8ecfed18e44dc2d37c494e6663)
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_71_1.jpg?sign=1738872977-Pt4tea3uyQJmfvRGW5rFDHu3TgbKi7uc-0-116ced8742fef8676bb4d949301c5dc1)
由上述size函数的应用可知:①size函数的返回值可以是分开显示的单个实数变量,也可以是一个行向量;②在size函数的输入参数中增加维度参数可以获取指定维度的长度,其中“1”表示行,“2”表示列。
使用numel函数可以获取矩阵A中元素的个数。例如,在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_71_2.jpg?sign=1738872977-XZFkbLVaazYZBMdneERcfTVkPCy9khxD-0-07c3b980aeebeb096ff945fedf162dbf)
得到的结果如下:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_71_3.jpg?sign=1738872977-2FTKEHlckWvsdtRa9TmD2zZgUJIrXi90-0-d3fc92248df7958fa06cac8b6528f083)
例2-39:数值与矩阵的算术运算示例。
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_71_4.jpg?sign=1738872977-NrXOaK6sqYe6LhgazPtOsC3HAHGMWcPl-0-a4448c6f4a53d7f147184d7ac8fde306)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_71_5.jpg?sign=1738872977-wuGwdfPMXPBQgRxl0SKhy2o9DnmNc7Qi-0-a371b7c19c7b7b31d3603dd37baed2ae)
3.矩阵维度
对于空矩阵、标量矩阵、一维矩阵和二维矩阵,MATLAB都将其作为普通二维数组对待。需要特别注意的是,用[]产生的空矩阵作为二维矩阵,但是在高维矩阵中也有空矩阵的概念,此时空矩阵具有多个维度。
MATLAB中提供了ndims函数来计算矩阵维度。
例2-40:计算矩阵维度示例。
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_72_1.jpg?sign=1738872977-WyIJo4gQM06OZak0ci0lELo5Fn0dR3QD-0-bfbcd06c7b754bbdf3e4a180cd96ee96)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_72_2.jpg?sign=1738872977-VgoNGchJ6LTBjLHF0pTDU5oGr4GWYFBE-0-6773dcca68bd764ff9a4717129baa62e)
4.矩阵的数据类型
矩阵作为MATLAB的内部数据存储和运算结构,其元素可以是各种各样的数据类型,对应不同数据类型的元素,可以是数值、字符串、元胞、结构体等。MATLAB中提供了一系列关于数据类型的测试函数,如表2-17所示。
表2-17 矩阵数据类型测试函数
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_72_3.jpg?sign=1738872977-nTJ5wSX6urzNbMPYYa6VpoJe9dG9kg7L-0-0b96f399f18d2a8e909854876a992c16)
这类函数的返回值也是逻辑类型的数据。返回值为“1”表示是某一特定的数据类型,返回值为“0”表示不是该特定的数据类型。
例2-41:矩阵元素的数据类型的判断示例。
在命令行窗口中依次输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_72_4.jpg?sign=1738872977-AtDH5BFlPOWyib7CnEeGWlmX1XYw61g1-0-e6b610b8434663e9a999a7c049447df9)
得到的结果为:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_72_5.jpg?sign=1738872977-UA1t7SPiQcX8AxLwPRnM8Fq75kNQCseI-0-c62422ed71c11f0582a441eb9db9b9f1)
建立一个字符串矩阵B并进行判断,程序代码如下:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_72_6.jpg?sign=1738872977-ssrYDkUKUY05nl7bYfdRmeU8LXdfivHR-0-e37f4dd3b15da0145351ee2bbf81fa4f)
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_73_1.jpg?sign=1738872977-sLwAXw1824wOUfLfF4rwhxz9uSCzsv0F-0-d3d25fa7b3808fa88f16c0d75cb4ab3b)
得到的结果为:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_73_2.jpg?sign=1738872977-SDEQeGMOlpFJFH9DpOtypGhQy0Vlguu8-0-777a709341e3bbec184d3255db18742f)
例2-42:数据类型判断示例。
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_73_3.jpg?sign=1738872977-UCFAocTkH0cpTtuXQsZffpm4pwHnlvGW-0-02e0e9507f0e8f2cda5579c3aee6251f)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_73_4.jpg?sign=1738872977-YOuefNHu68wLCmD7Qt1uUSviQ2JyDs30-0-0a7b1b20661c4631b9f84d6cea6b580d)
例2-43:将矩阵A中的实数和复数分开为一个具有实数与复数的矩阵示例。
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_73_5.jpg?sign=1738872977-QJlwqszXhLwc6CtxWuy5FS4H6HR6edkB-0-6043463003a4f378625c5f4626bdd258)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_73_6.jpg?sign=1738872977-q5h5MCDdhElj6oOmHOE8YsoewvRqh0mS-0-3f72dcb041c237f28136bffe2dd4f7bb)
5.矩阵占用的内存
了解矩阵的内存占用情况对于优化MATLAB代码性能是十分重要的。用户可以通过whos命令查看当前工作区中指定变量的所有信息,包括变量名、矩阵大小、内存占用和数据类型等。
例2-44:查看矩阵占用的内存示例。
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_74_1.jpg?sign=1738872977-JY6zKqmQusBuTrmBACTH9O29QNMnenQm-0-ac00a33ffb9eff96cd14ed9c4f668ac1)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_74_2.jpg?sign=1738872977-jS7NeBBDR7xwHFRY6PzzahofF8uAnoKM-0-21a3b4a4e86aba7cfc9a0197cd3ee3b8)
在命令行窗口中输入:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_74_3.jpg?sign=1738872977-XGVsuobCOfJuzmqnqLerovfEf1mWo9zR-0-c9e42a2373bd7f763888601fd5d5ebf2)
输出结果:
![](https://epubservercos.yuewen.com/57BE9F/26947316904586506/epubprivate/OEBPS/Images/44590_74_4.jpg?sign=1738872977-mKVVCkyYlQ7aFaTyj8EHbTYcm0OWUNy1-0-965bd61d68c986dccfa6f967fd60b319)