本系列教程来源于出版设计《基于MATLAB编程基础与典型应用书籍》,如涉及版权问题,请联系:156204968@qq.com。 出版社:人民邮电出版社, 页数:525。
本系列教程目前基于MATLABR2006a,可能对于更高级版本的功能和函数有差异,教程中如有问题,请联系:156204968@qq.com
5.4 数据统计处理
本节介绍数据统计处理方法,包括最大(小)值运算、求和(积)运算、平均值(中值)运算、累加(乘)运算、标准方差、相关系数以及排序运算。
5.4.1 最大值和最小值
MATLAB提供的求数据序列的最大值和最小值的函数分别为max和min,两个函数的调用格式和操作过程类似,可以分别用来求向量或矩阵的最大值和最小值。
(1)求向量的最大值和最小值
求向量的最大值和最小值的函数调用格式见表5.1。
表5.1 求向量最大值、最小值函数
函数名 | 功能 |
---|---|
y=max(X) |
返回向量X的最大值存入y,若X中包含复数元素,则按模取最大值 |
[y,I]=max(X) |
返回向量X的最大值存入y,最大值序号存入I,若X中包含复数元素,则按模取最大值 |
y=min(X) |
返回向量X的最小值存入y,如果X中包含复数元素,则按模取最小值 |
[y,I]=min(X) |
返回向量X的最小值存入y,最小值序号存入I,若X中包含复数元素,则按模取最小值 |
【例5.12】求向量的最大值
>> B=[5 3 4 8 5 6 8 7 6 9 2 6 8 2 1 2 7 9 3 9 4 5 6 7 8 ]
①求向量B的最大值存入y,最大值的序号存入I。在命令窗口中输入:
>> y=max(B) %向量B的最大值存入y
返回的向量B的最大值如下:
y =
9
在命令窗口中输入:
>> [y,I]=max(B) %返回最大值及最大值对应的序号
返回的向量B的最大值和最大值对应的序号如下:
y =
9
I =
10
(2)求矩阵的最大值和最小值
求矩阵的最大值和最小值的函数调用格式见表5.2。
表5.2 求矩阵的最大值、最小值函数
函数名 | 功能 |
---|---|
max(A) |
返回一个行向量,向量的第i个元素是矩阵A的第i列上的最大值 |
[Y,U]=max(A) |
返回行向量Y和U,Y向量记录A的每列的最大值,U向量记录每列最大值的行号 |
max(A,[],dim) |
dim取1或2。dim取1时,该函数和max(A)完全相同;dim取2时,该函数返回一个列向量,其第i个元素是A矩阵的第i行上的最大值 |
min(A) |
返回一个行向量,向量的第i个元素是矩阵A的第i列上的最小值 |
[Y,U]=min(A) |
返回行向量Y和U,Y向量记录A的每列的最小值,U向量记录每列最小值的行号 |
min(A,[],dim) |
dim取1或2。dim取1时,该函数和min(A)完全相同;dim取2时,该函数返回一个列向量,其第i个元素是A矩阵的第i行上的最小值 |
【例5.13】求矩阵的最大值
>> A=rand(7); %创建7阶的随机矩阵
①返回矩阵A每列的最大值及对应行号。在命令窗口中输入:
>> max(A) %求取矩阵每列的最大值
返回的矩阵A每列的最大值如下:
ans =
0.8385 0.9797 0.8939 0.9883 0.5828 0.7833 0.7942
在命令窗口中输入:
>> [Y,U]=max(A) %返回矩阵A每列的最大值及对应行号
返回的矩阵A每列的最大值和最大值对应的序号如下:
Y =
0.8385 0.9797 0.8939 0.9883 0.5828 0.7833 0.7942
U =
1 7 7 7 1 6 3
还可以通过以下方式返回矩阵A每列的最大值,在命令窗口中输入:
>> max(A,[],1) %计算矩阵A每列的最大值
返回的矩阵A每列的最大值如下:
ans =
0.8385 0.9797 0.8939 0.9883 0.5828 0.7833 0.7942
如返回矩阵A每行的最大值,可以输入以下内容:
>> max(A,[],2) %计算矩阵A每行的最大值
②求矩阵最小值的操作与求矩阵最大值的操作完全相同,只需要将max命令换成min命令即可。
(3)两个向量或矩阵对应元素的比较
函数max和min还能对两个同型的向量或矩阵进行比较,函数调用格式见表5.3。
表5.3 最大值、最小值函数
函数名 | 功能 |
---|---|
U=max(A,B) |
A,B是两个同型的向量或矩阵,结果U是与A,B同型的向量或矩阵,U的每个元素等于A,B对应元素的较大者 |
U=max(A,n) |
n是一个标量,结果U是与A同型的向量或矩阵,U的每个元素等于A对应元素和n中的较大者 |
U=min(A,B) |
A,B是两个同型的向量或矩阵,结果U是与A,B同型的向量或矩阵,U的每个元素等于A,B对应元素的较小者 |
U=min(A,n) |
n是一个标量,结果U是与A同型的向量或矩阵,U的每个元素等于A对应元素和n中的较小者 |
5.4.3 求和与求积
MATLAB提供的数据序列求和与求积的函数分别是sum和prod,这两个函数的使用方法类似,分别可以用来对向量和矩阵求和与求积。函数调用格式及功能见表5.4。
表5.4 求和与求积函数
函数名 | 功能 |
---|---|
sum(X) |
返回向量X各元素的和 |
sum(A) |
返回一个行向量,其第i个元素是矩阵A的第i列的元素和 |
sum(A,dim) |
当dim为1时,该函数等同于sum(A);当dim为2时,返回一个列向量,其第i个元素是矩阵A的第i行的各元素之和 |
prod(X) |
返回向量X各元素的乘积 |
prod(A) |
返回一个行向量,其第i个元素是矩阵A的第i列的元素乘积 |
prod(A,dim) |
当dim为1时,该函数等同于prod(A);当dim为2时,返回一个列向量,其第i个元素是A的第i行的各元素乘积 |
【例5.15】向量和矩阵的求和与求积
在命令窗口输入以下内容,生成向量A和矩阵B如下:
>> A=[1 2 3 4 5 5 3 4 8 5 6]
>> B=rand(4) %生成4阶的随机矩阵
①计算向量A各列元素的和与向量A各列元素的乘积,在命令窗口中输入:
>> sum(A) %返回各列元素的和
计算得到的各列元素的和如下:
ans =
46
在命令窗口中输入:
>> prod(A) %返回各列元素的积
计算得到的各列元素的积如下:
ans =
1728000
②分别返回矩阵B各列元素的和与矩阵B各列元素的乘积,在命令窗口中输入:
>> sum(B) %返回各列元素的和
计算得到的各列元素的和如下:
ans =
2.2741 2.1284 2.6735 2.2420
在命令窗口中输入:
>> prod(B) %返回各列元素的积
计算得到的各列元素的积如下:
ans =
0.0648 0.0057 0.1780 0.0487
③可以采用下列的方式返回矩阵B各列元素的和与矩阵B各列元素的乘积,具体输入内容和计算返回结果如下:
>> sum(B,1) %返回各列元素的和
ans =
2.2741 2.1284 2.6735 2.2420
>> prod(B,1) %返回各列元素的积
ans =
0.0648 0.0057 0.1780 0.0487
④返回矩阵B各行所有元素的和与矩阵B各行所有元素的积,在命令窗口中输入:
>> sum(B,2) %返回各行元素的和
>> prod(B,2) %返回各行元素的积
作者:德特数据
联系方式:156204968@qq.com