- MATLAB/Simulink权威指南:开发环境、程序设计、系统仿真与案例实战
- 徐国保 张冰 石丽梅 吴凡
- 1497字
- 2021-03-24 02:07:23
4.4 数据统计
在生产实际和科学研究中经常会对数据进行统计,MATLAB语言提供了很多数据统计方面的函数。
4.4.1 矩阵元素的最大值和最小值
1.求向量的最大元素和最小元素
1)求向量的最大元素
MATLAB求一个向量X的最大元素可以使用函数max(X),其调用格式为
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P172_29147.jpg?sign=1739689667-bSDXR2XGmG4iy1a6LIgefjIRVu5e2HeX-0-6d56809b2cdae95aabea65dd7a024df0)
例如,求向量X=[34,23,﹣23,6,76,56,14,35]的最大值。
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P172_29148.jpg?sign=1739689667-YWO3KsPeImI6rJJ81GBVEVwEnzSnXp5B-0-0ebfd58f3b1e4b9c9ffb7924d8e44511)
2)求向量的最小元素
MATLAB求一个向量X的最小元素可以使用函数min(X),其调用格式及用法与max(X)函数一样。
例如,求向量X=[34,10,﹣23,6,76,0,14,35]的最小值。
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P172_29149.jpg?sign=1739689667-QCFHiouZuVSbGaj89mju2AFz8CyJMRjU-0-3b9f6df5246cca7248fdfac88a619944)
2.求矩阵的最大元素和最小元素
1)求矩阵的最大元素
MATLAB求一个矩阵A的最大元素可以使用函数max,其调用格式为
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P173_29150.jpg?sign=1739689667-EusvhvG1KpefQJtPrbrh0JChfkq1ZnCL-0-3152f7f8bb3320f9d4e44cc8273149e4)
其中,dim为1时,该函数和max(A)完全相同;当dim为2时,该函数返回一个每行上最大元素的列向量。
2)求矩阵的最小元素
MATLAB求一个矩阵A的最小元素可以使用函数min,其调用格式及用法和max函数一样。
【例4-15】 在MATLAB中,用max和min函数求矩阵A的每行和每列的最大和最小元素,并求整个A的最大和最小元素。
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P173_29152.jpg?sign=1739689667-VoPjJGCpcnqD28vlQjovQscerYyCs77i-0-698752acf260f553f6c9272f5af4e619)
程序代码如下:
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P173_29153.jpg?sign=1739689667-kjdO5XCrpi2dSwZHCBZFrttmLQ9nopc0-0-7ce2298526819dc478c549bc405af865)
3.两个维度一样的向量或矩阵对应元素比较
max和min函数还能对两个维度一样的向量或矩阵对应元素求大值和小值。
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P174_29155.jpg?sign=1739689667-nEsJHRK6cRPc6jcbQ6u9qeFxK6QQ14Ni-0-de716e8aa6a03ed41b7d0adceb72804a)
其中,A和B是同维度的向量或矩阵,Y的每个元素为A和B对应元素的较大者,与A和B同维。
min函数的用法和max一样。
例如,求A和B矩阵对应元素的较大元素Y1和较小元素Y2。
程序代码如下:
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P174_29157.jpg?sign=1739689667-aJKqV634RJMolAbQmPreNSHcJmZb4UB1-0-5dbdce03be8515349265b5c27376f5cc)
4.4.2 矩阵元素的平均值和中值
数据序列的平均值指的是算术平均,中值是指数据序列中其值位于中间的元素,如果数据序列个数为偶数,中值等于中间两项的平均值。
MATLAB求矩阵或向量元素的平均值用mean函数,求中值用median函数。它们的调用方法如下:
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P175_29158.jpg?sign=1739689667-0vF4jqD66jzp8QJHPql2VHGYeyeloFYx-0-6df7a64f7fb1581e8c2532d5d87e20b6)
例如,求向量X和矩阵A的平均值和中值。
程序代码如下:
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P175_29159.jpg?sign=1739689667-FP8cRlxm2e2aYy7WA5QsGB44GTPhio8r-0-84613f7cb96db0e9307000fc5de62f09)
4.4.3 矩阵元素的排序
在MATLAB中,可以用函数sort实现数据序列的排序。对于向量X的排序,可以用函数sort(X),函数返回一个对向量X的元素按升序排列的向量。
sort函数还可以对矩阵A的各行或各列的元素重新排序,其调用格式为
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P176_29160.jpg?sign=1739689667-jWG7Le1tykPYyzO16P52JcenDYSyy3g2-0-8a15a60b523666fee2ba77e8ff3845c1)
其中,当dim为1时,矩阵元素按列排序;当dim为2时,矩阵元素按行排序。dim默认为1。当mode为'ascend',则按升序排序;当mode为'descend',则按降序排序。mode默认取'ascend'。Y为排序后的矩阵,而I记录Y中元素在A中的位置。
例如,对一个向量X和一个矩阵A做各种排序。
程序代码如下:
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P176_29162.jpg?sign=1739689667-sAswf1hoQBN8ZWuDNPSB0l41rayS96Bh-0-53cf62777ebd93ea980289cb9bdc362c)
4.4.4 矩阵元素求和与求积
在MATLAB中,向量和矩阵求和与求积的基本函数是sum和prod,它们的使用方法类似,调用格式为
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P177_29163.jpg?sign=1739689667-oo5QkTxy2q3aoLK4yqstHIBHaJiEDgKG-0-9100394c11c9ac3fb51c3b9aa5f3c675)
例如,求一个向量X和一个矩阵A的各元素的和与乘积。
程序代码如下:
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P177_29164.jpg?sign=1739689667-as6ZBhEtQ3XdLPOJCcIFQbLeXALB7KwW-0-222b84b09020a93463a813e31a00c26a)
4.4.5 矩阵元素的累加和与累乘积
在MATLAB中,向量和矩阵的累加和与累乘积的基本函数是cumsum和cumprod,它们的使用方法类似,调用格式为
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P178_29165.jpg?sign=1739689667-mZRoQ9jDNuPvOFP3LGkZu0z7FDTkR9F2-0-fa5414b87ebfbd8a54596a53017f6b1c)
例如,求一个向量X和一个矩阵A的各元素的累加和与累乘积。
程序代码如下:
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P178_29166.jpg?sign=1739689667-Zn7wiCv3d3wNrjGeOoA6RONwjVcJobLl-0-9e6c3f77a66f9d1c2b398011fd69ac09)
4.4.6 标准方差和相关系数
1.标准方差
对于具有N个元素的向量数据x1,x2,…,xN,有如下两种标准方差的公式:
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P179_29168.jpg?sign=1739689667-rnjZY2o11xbv0LXkOT0mdRvPNdnam961-0-5233d7b9644fd0b7ddecab557ac65174)
或
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P179_29170.jpg?sign=1739689667-QEzFjpcAtWwSArKCiu6YjPt7ITfhB9rv-0-02de0fe6614a1177aaaff19b734b6c72)
其中
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P179_29172.jpg?sign=1739689667-JbPy0jVFUQuAz9ywVyO32jRagz9HjLCo-0-328017273bee338f088416664a98063b)
在MATLAB中,可以用函数std计算向量和矩阵的标准方差。对于向量X,std(X)返回一个标准方差;对于矩阵A,std(A)返回一个矩阵A各列或者各行的标准方差向量。std函数的调用格式为
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P179_29173.jpg?sign=1739689667-gzckdcSjbCw4VTAqBdzl4qsoEuqBvLQZ-0-e6f84c3f545c40b7da874b78201d3146)
其中,当dim为1时,求矩阵A的各列元素的标准方差;当dim为2时,则求矩阵A的各行元素的标准方差。当flag为0时,按式(4-5)计算标准方差;当flag为1时,按式(4-6)计算标准方差。默认flag=0,dim=1。
例如,求一个向量X和一个矩阵A的标准方差。
程序代码如下:
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P179_29175.jpg?sign=1739689667-WkNZPQhntbTicg2GAa73BPL8EWDDK85w-0-caee96ad15a4ae3cace0ba6b2caf3b1f)
2.相关系数
对于两组数据序列xi,yi(i=1,2,…,N),可以用下列公式定义两组数据的相关系数:
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P180_29178.jpg?sign=1739689667-6xar8WRr6FZZ2TW131JcjiphZawqPAog-0-323c9697f534f096639d5174aebde1e5)
其中
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P180_29179.jpg?sign=1739689667-KH9OPenjSn5EHYH9LugNfRSdqSDPBBWO-0-9ac6793b6222dfb0bdc9482dfa2ed4cb)
在MATLAB中,可以用函数corrcoef计算数据的相关系数。corrcoef函数的调用格式为
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P180_29180.jpg?sign=1739689667-vGLqKM0KOR3NEquk41e8KS073aaXzpa8-0-249b36a3d70c345e385d841682418ca6)
例如,求两个向量X和Y的相关系数,并求正态分布随机矩阵A的均值、标准方差和相关系数。
程序代码如下:
![](https://epubservercos.yuewen.com/59B7C6/15477655505633306/epubprivate/OEBPS/Images/Figure-P180_29181.jpg?sign=1739689667-iSTqxOrGt8mT7UpRVJEPRT6K4E3hCFxJ-0-2face84241924ee180d699a1948f37bd)
由上述结果可知,每列的均值接近0,每列的标准方差接近1,验证了A为标准正态分布随机矩阵。