本系列教程来源于出版书籍《基于MATLAB编程基础与典型应用书籍》,如涉及版权问题,请联系:156204968@qq.com。 出版社:人民邮电出版社, 页数:525。
本系列教程目前基于MATLABR2006a,可能对于更高级版本的功能和函数有差异,教程中如有问题,请联系:156204968@qq.com
5.4.4 平均值和中值
MATLAB提供了求数据序列平均值的函数mean与数据序列中值的函数median,函数调用格式及功能见表5.5。
表5.5 求平均值与中值函数
函数名 | 功能 |
---|---|
mean(X) |
返回向量X的算术平均值 |
mean(A) |
返回一个行向量,其第i个元素是矩阵A的第i列的算术平均值 |
mean(A,dim) |
当dim为1时,该函数等同于mean(A);当dim为2时,返回一个列向量,其第i个元素是A的第i行的算术平均值 |
median(X) |
返回向量X的中值 |
median(A) |
返回一个行向量,其第i个元素是矩阵A的第i列的中值 |
median(A,dim) |
当dim为1时,该函数等同于median(A);当dim为2时,返回一个列向量,其第i个元素是矩阵A的第i行的中值 |
【例5.16】求向量和矩阵的平均值与中值
在命令窗口输入以下内容,生成向量B和矩阵A如下:
>> B=[5 3 4 8 5 6 8 7 6 9 2 6]
>> A=rand(4) %生成4阶的随机矩阵
①求向量B的算术平均值与矩阵A的算术平均值,在命令窗口中输入:
>> mean(B) %向量B的算术平均值
计算得到的向量B的算术平均值如下:
ans =
5.7500
在命令窗口中输入:
>> mean(A) %矩阵A的算术平均值
计算得到的矩阵A的算术平均值如下:
ans =
0.7891 0.3084 0.2860 0.3083
②求向量B的中值与矩阵A的中值,在命令窗口中输入:
>> median(B) %向量B的中值
计算得到的向量B的中值如下:
ans =
6
在命令窗口中输入:
>> median(A) %矩阵A的中值
计算得到的矩阵A的中值如下:
ans =
0.9053 0.2054 0.2007 0.2355
③可以通过以下方式求矩阵A的算术平均值与中值,具体操作及返回结果如下:
> mean(A,1) %矩阵A每列的算术平均值
ans =
0.7891 0.3084 0.2860 0.3083
>> median(A,1) %矩阵A每列的中值
ans =
0.9053 0.2054 0.2007 0.2355
④求矩阵A的各行的算术平均值与中值,在命令窗口中输入:
>> mean(A,2) %计算得到矩阵A各行的算术平均值
>> median(A,2) %计算得到矩阵A各行的中值
5.4.5 累加和与累乘积
在MATLAB中,使用cumsum和cumprod函数能方便地求得向量和矩阵元素的累加和与累乘积向量,函数调用格式及功能见表5.6。
表5.6 累加和与累加积函数
函数名 | 功能 |
---|---|
cumsum(X) |
返回向量X累加和向量 |
cumsum(A) |
返回一个矩阵,其第i列是矩阵A的第i列的累加和向量 |
cumsum(A,dim) |
当dim为1时,该函数等同于cumsum(A);当dim为2时,返回一个矩阵,其第i行是矩阵A的第i行的累加和向量 |
cumprod(X) |
返回向量X累乘积向量 |
cumprod(A) |
返回一个矩阵,其第i列是矩阵A的第i列的累乘积向量 |
cumprod(A,dim) |
当dim为1时,该函数等同于cumprod(A);当dim为2时,返回一个向量,其第i行是矩阵A的第i行的累乘积向量 |
【例5.17】求向量与矩阵的累加和与累乘积
在命令窗口输入以下内容,生成向量A和矩阵B如下:
>> A=[1 2 3 4 5 5 3 4 8 5 6 8 7 6 ]
>> B=rand(4) %生成四阶的随机阵
①计算向量A的累加和,返回为一向量,在命令窗口输入:
>> cumsum(A) %向量A的累加和
计算得到的向量A的累加和如下:
ans =
1 3 6 10 15 20 23 27 35 40 46 54 61 67
读者可以尝试使用以下命令,计算矩阵的累加和累乘积的结果,在MATLAB命令行窗口中输入:
>> cumsum(B) %计算矩阵B的累加和,返回一个矩阵
>> cumprod(A) %计算向量A的累乘积,返回为一向量
>> cumprod(B) %计算矩阵B累乘积,返回一个矩阵
>> cumsum(B,1) %计算矩阵的累加,按照列相加,返回一行向量
>> cumprod(B,1) %计算矩阵的累乘,按照列相乘,返回一行向量
>> cumsum(B,2) %计算矩阵的累加,按照行相加,返回一列向量
>> cumprod(B,2) %计算矩阵的累加,按照行相加,返回一列向量
5.4.6 标准方差
在MATLAB中,提供了计算数据序列的标准方差的函数std。该函数对于向量X返回一个标准方差;对于矩阵A返回一个行向量,它的各个元素便是矩阵A各列或各行的标准方差。调用格式为:
Y=std(A,flag,dim)
其中,dim可以取1或2。当dim=1时,求各列元素的标准方差;当dim=2时,则求各行元素的标准方差。flag可以取0或1,当flag=0时,置前因子为;否则置前因子为。缺省flag=0和dim=1。
【例5.18】标准方差计算
在命令窗口输入以下内容,生成向量B和矩阵A如下:
>> B=[5 3 4 8 5 6 8 7 6 9 2 6]
>> A=rand(4)
①求矩阵A的各列元素的标准方差,flag=0。在命令窗口中输入以下内容:
>> Y=std(A,0,1) %矩阵A的各列元素的标准方差
计算得到的矩阵A的各列元素的标准方差如下:
Y =
0.2327 0.2437 0.2315 0.1809
②求矩阵A的各行元素的标准方差,flag=0。在命令窗口中输入以下内容:
>> Y=std(A,0,2) %矩阵A的各行元素的标准方差
计算得到的矩阵A的各行元素的标准方差如下:
Y =
0.0911
0.3302
0.3848
0.0464
③求矩阵A的各列元素的标准方差,flag=1。在命令窗口中输入以下内容:
>> Y=std(A,1,1)
计算得到的矩阵A的各列元素的标准方差如下:
Y =
0.2015 0.2110 0.2004 0.1566
④求矩阵A的各行元素的标准方差,flag=1。在命令窗口中输入以下内容:
>> Y=std(A,1,2)
计算得到的矩阵A的各行元素的标准方差如下:
Y =
0.0789
0.2860
0.3333
0.0402
⑤对数组进行标准方差计算与对矩阵可以计算标准方差类似。下面分别计算数组B在各种情况下的方差的值。具体操作及返回结果如下所示:
>> Y=std(B,0,1)
>> Y=std(B,0,2)
Y =
2.0944
>> Y=std(B,1,1)
>> Y=std(B,1,2)
Y =
2.0052
5.4.7 相关系数
MATLAB提供了corrcoef函数,可以求出数据的相关系数矩阵。调用格式为:
①corrcoef(X)
②corrcoef(X,Y)
corrcoef函数返回从矩阵X形成的一个相关系数矩阵。此相关系数矩阵的大小与矩阵X一样。它把矩阵X的每列作为一个变量,然后求它们的相关系数。其中X,Y是向量,与corrcoef([X,Y])的作用一样。
【例5.19】求解相关系数
在命令窗口中输入以下内容,生成随机矩阵A、向量B和向量C如下:
>> A=rand(4)
>> B=[5 3 4 8 5 6 8 7 6 9 2 6]
>> C=[1 2 3 4 5 5 3 4 8 5 6 8]
①矩阵A形成的一个相关系数矩阵。在命令窗口中输入以下内容:
>> corrcoef(A) % 求解矩阵A形成的一个相关系数矩阵
返回相关系数矩阵如下:
ans =
1.0000 -0.2608 0.5478 -0.7232
-0.2608 1.0000 -0.9397 0.2996
0.5478 -0.9397 1.0000 -0.3984
-0.7232 0.2996 -0.3984 1.0000
②可以求向量B形成的一个相关系数矩阵。在命令窗口中输入以下内容:
>> corrcoef(B) %求取向量B形成的一个相关系数矩阵
返回相关系数矩阵如下:
ans =
1
5.4.8 排序
MATLAB提供了sort函数来实现排序功能,调用格式如下:
sort(X)
[Y,I]=sort(A,dim)
函数返回一个对X中的元素按升序排列的新向量,Y是排序后的矩阵,而I记录Y中的元素在A中位置。其中,dim指明对矩阵A的列还是行进行排序。若dim=1,则按列排;若dim=2,则按行排。
【例5.20】排序
在命令窗口输入以上内容,生成向量A和矩阵B如下:
>> A=[1 2 5 3 4 8 5 6 8 7 6 9 2 6 ]
>> B=rand(4)
①对向量A按升序排列,返回一新向量。在命令窗口中输入以下内容:
>> sort(A) %向量A按升序排列
返回的向量如下:
ans =
1 2 2 3 4 5 5 6 6 6 7 8 8 9
②对矩阵B按列排序,返回排列后的矩阵Y,I记录Y中的元素在B中位置。在命令窗口中输入以下内容:
>> [Y,I]=sort(B,1) %矩阵B按列排序
对矩阵B按列排列后返回的矩阵Y和记录Y中的元素在B中位置的矩阵I如下:
Y =
0.5226 0.1730 0.0118 0.1991
0.7948 0.2523 0.1365 0.2987
0.8801 0.2714 0.7373 0.6614
0.9568 0.9797 0.8757 0.8939
I =
3 1 4 2
1 4 3 3
4 3 2 4
2 2 1 1
③对矩阵B按行排序,返回排列后的矩阵Y,I记录Y中的元素在B中位置。在命令窗口中输入以下内容:
>> [Y,I]=sort(B,2) %对矩阵B按行排序
④与对矩阵B的操作类似,对向量A也可以按列与按行排序,返回排列后的向量Y,I记录Y中的元素在A中位置排序。
对向量A按列排序,返回排列后的向量Y,I记录Y中的元素在A中位置。在命令窗口中输入以下内容:
>> [Y,I]=sort(A,1) %对向量A按列排序
对向量A按行排序,返回排列后的向量Y,I记录Y中的元素在A中位置。在命令窗口中输入以下内容:
>> [Y,I]=sort(A,2) %对向量A按行排序
5.5 本章小结
本章重点介绍了MATLAB提供的基本的数学运算功能,主要包括多项式的相关运算、数据的插值与拟合运算、数据统计处理运算以及傅立叶变换等内容。
多项式部分通过实例重点介绍了多项式运算相关的内容,主要包括多项式的表示方法、多项式的四则运算、多项式的求导运算、多项式的求值与求根运算、多项式的展开以及多项式的积分运算等内容。掌握多项式运算内容是深入学习MATLAB其他内容的基础。
数据插值部分和拟合部分通过实例介绍了MATLAB提供的数据处理时经常使用的数据插值和拟合运算函数,其中插值部分包括一维和二维数据的插值运算。曲线拟合运算时要正确的选择所要拟合的多项式的阶,并不是拟合多项式的阶越高精度越好,一般拟合多项式的阶不超过5阶。
数据统计处理部分通过实例详细介绍一些常用的数据统计处理方法,主要包括数据的最大值与最小值运算、求和与求积运算、平均值与中值运算、累加和与累乘积运算、标准方差、相关系数以及排序等运算。
作者:德特数据
联系方式:156204968@qq.com