如何利用MATLAB对数据统计分析?

0前言

本文是科学计算与MATLAB语言的专题6的第1小节总结笔记,并结合了自己一点的理解,看完本文,可以轻松借助MATLAB对数据进行分析,如求矩阵或向量的最大元素、最小元素、平均值、中值等等。

1 求最大元素与最小元素

max():求向量或矩阵的最大元素。
min():求向量或矩阵的最小元素。
当参数为向量时,上述函数有两种调用格式:
(1)y=max(X):返回向量x的最大值存入y,如果X中包含复数元素,则按模取最大值。
(2)[y,k]=max(X):返回向量x的最大值存入y,最大值元素的序号存入k,如果X中包含复数元素,则按模取最大值。
例1求向量x的最大元素,其中x=[-43,72,9,16,23,47]。

x=[-43,72,9,16,23,47];
y=max(x)
y=72
[y,k]=max(x)
y=72
k=2

当参数为矩阵时,函数有三种调用格式:
(1)max(A):返回一个行向量,向量的第i个元素是矩阵A的第i列上的最大值。
也就是说将矩阵的每一列中最大的元素记录下来,并生成一个行向量。
(2)[Y,U]=max(A):返回行向量Y和U,Y向量记录A中每列的最大值,U向量记录每列最大值元素的行号。
(3)max(A,[],dim):dim取1或2。dim取1时,该函数的功能和max(A)完全相同;dim取2时,该函数返回一个列向量,其第i个元素是A矩阵的第i行上的最大值。
dim就是维数(英文单词dimension 的缩写)。比如说dim=1就是按照行来算的,dim = 2就是列,dim=3 就是第三维。
思考:对矩阵按行求最大元素,仅使用第一种格式,能够做到吗?
例2 求矩阵A的每行及每列的最大元素,并求整个矩阵的最大元素。
A= [ 13 − 56 78 25 63 − 235 78 25 563 1 0 − 1 ] \left[\begin{matrix} 13&-56&78\\ 25&63&-235\\ 78&25&563\\ 1&0&-1 \end{matrix}\right] 13257815663250782355631

A=[13,-56,78;25,63,-235;78,25,563;1,0,-1];
max(A) 
max(A,[],2)
max(max(A))   

思考:用什么方法只调用一次max函数就能求得整个矩阵的最大值?

max((A:)‘)%先将矩阵A变成一个列向量,再将其转置。 

2 求平均值与中值

平均值:指算术平均值,即每项数据之和除以项数。
中值:指在数据序列中其值的大小恰好处在中间的元素。如果数据个数为奇数,则取值为大小位于中间的元素;如果数据个数为偶数,则取中间两个元素的平均值。
在MATLAB中,求平均值和中值的函数分别为:
mean():求算术平均值。
median():求中值。
思考:有了平均值,为什么还要中值?
中值的优点是不受偏大或偏小数据的影响,很多情况下用它代表全体数据的一般水平更合适。
例3 某学生宿舍的5位同学月生活费如向量x所示,其中,小明同学家境一般,请问他应该按什么标准向父母主张生活费额度才较为合理。x=[1200,800,1500,1000,5000]

x=[1200,800,1500,1000,5000];
mean(x)
median(x)

3 求和与求积

sum():求和函数。
prod():求积函数。

4 累加和与累乘积

U = ( u 1 , u 2 , u 3 . . . u n ) U=(u_1,u_2,u_3...u_n) U=u1,u2,u3...un是一个向量, V V V W W W是与 U U U等长的另外两个向量,并且
V = ( ∑ i = 1 1 u i , ∑ i = 1 2 u i , ∑ i = 1 3 u i , . . . , ∑ i = 1 n u i ) V=(\sum\limits_{i=1}^1u_i,\sum\limits_{i=1}^2u_i,\sum\limits_{i=1}^3u_i,...,\sum\limits_{i=1}^nu_i) V=(i=11ui,i=12ui,i=13ui,...,i=1nui)
W = ( ∏ i = 1 1 u i , ∏ i = 1 2 u i , ∏ i = 1 3 u i , . . . , ∏ i = 1 n u i ) W=(\prod\limits_{i=1}^1u_i,\prod\limits_{i=1}^2u_i,\prod\limits_{i=1}^3u_i,...,\prod\limits_{i=1}^nu_i) W=(i=11ui,i=12ui,i=13ui,...,i=1nui)
则分别称 V V V W W W U U U的累加和向量和累乘积向量。
在MATLAB中,求累加和与累乘积的函数分别为:
cumsum():累加和函数。
cumprod():累乘积函数。
例4 求向量X=[1,2,3,4,5,6,7,8,9,10]的积与累乘积。

X=[1,2,3,4,5,6,7,8,9,10];
y1=prod(X) 
y2=cumprod(X)

5 求标准差与相关系数

标准差用于计算数据偏离平均数的距离的平均值,其计算公式为
S 1 = 1 N + 1 ∑ i = 1 N ( x i − x ˉ ) 2 S_1=\sqrt {\frac{1}{N+1}\sum\limits_{i=1}^N(x_i-\bar{x})^2} S1=N+11i=1N(xixˉ)2
S 2 = 1 N ∑ i = 1 N ( x i − x ˉ ) 2 S_2=\sqrt {\frac{1}{N}\sum\limits_{i=1}^N(x_i-\bar{x})^2} S2=N1i=1N(xixˉ)2
MATLAB中计算标准差的函数为std(),其调用格式为:
(1)std(X):计算向量X的标准差。
(2)std(A):计算矩阵A的各列的标准差。
(3)std(A,flag,dim):flag取0或1,当flag=0时,按 S 1 S_1 S1,所列公式计算样本标准方差;当flag=1时,按 S 2 S_2 S2,所列公式计算总体标准方差。在默认情况下,flag=0,dim=1。
例5 生成满足正态分布的50000*4随机矩阵,用不同的形式求其各列之间的标准差。

x=randn(50000,4);
y1=std(x,0,1) 
y2=std(x,1,1) 
x1=x';
y3=std(x1,0,2);
y3' 
y4=std(x1,1,2);
y4' 

相关系数能够反映两组数据序列之间相互关系,其计算公式为
r = ∑ ( x i − x ˉ ) ( y i − y ˉ ) ∑ ( x i − x ˉ ) 2 ∑ ( x i − y ˉ ) 2 r=\frac{\sum(x_i-\bar{x})(y_i-\bar{y})}{\sqrt{\sum(x_i-\bar{x})^2\sum(x_i-\bar{y})^2}} r=(xixˉ)2(xiyˉ)2 (xixˉ)(yiyˉ)
在MATLAB中,计算相关系数的函数为corrcoef(),其调用格式为:
(1)corrcoef(A):返回由矩阵A所形成的一个相关系数矩阵,其中,第i行第j列的元素表示原矩阵A中第i列和第j列的相关系数。
(2)corrcoef(X,Y):在这里,X,Y是向量,它们与corrcoef([x,Y])的作用一样,用于求X、Y向量之间的相关系数。
例6 某新产品上市,在上市之前,公司物流部门把新产品分配到不同地区的10个仓库进行销售。产品上市一个月后,公司要对各种不同的分配方案进行评估,以便在下一次新产品上市时进行更准确的分配,避免由于分配不当而产生的积压和断货。下表是相关数据,请判断那种分配方案最为合理。

仓库1月销量方案1方案2方案3
15032600051005200
26532650066005800
35500700054004800
44530400043004200
52300200022002500
63254300035003000
78095900078008500
87530800070007500
93841320035003200
104500520048004000
A=[5032,6000,5100,5200;6532,6500,6600,5800;
      5500,7000,5400,4800;4530,4000,4300,4200;
      2300,2000,2200,2500;3254,3000,3500,3000;
      8095,9000,7800,8500;7530,8000,7000,7500;
      3841,3200,3500,3200;4500,5200,4800,4000];
corrcoef(A)

6 排序

在MATLAB中,排序函数为sort(),其调用格式为:
(1)sort(X):对向量X按升序排列。
(2)[Y,I]=sort(A,dim,mode),其中dim指明对A的列还是行进行排序。mode指明按升序还是降序排序,若取“ascend”,则按升序;若取“descend”,则按降序,默认为升序。输出参数中,Y是排序后的矩阵,而I记录Y中的元素在A中位置。
例7 对下列矩阵A= [ 1 − 8 5 4 12 6 13 7 − 13 ] \left[ \begin{matrix} 1&-8&5\\ 4&12&6\\ 13&7&-13 \end{matrix} \right] 141381275613做各种排序。

A=[1,-8,5;4,12,6;13,7,-13];
sort(A)
sort(A,2,'descend')
[X,I]=sort(A)

7 结语

如果本文对您有帮助,请您点赞 👍 收藏⭐️转发✉️哈,如有问题,请您留言哈。

  • 21
    点赞
  • 105
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值