Matlab在数据分析与统计中的应用

更新时间:2023-11-13 15:10:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

1.14 统计

在MATLAB中,与统计计算有关的命令主要有: max(x) 最大值 min(x) 最小值 mean(x) 平均值 median(x) 中间值 std(x) 方差 var(x) 标准差 cov(x,y) 协方差 corrcoef(x,y) 相关系数

rand(m,n) 生成元素服从均匀分布U[0,1]的m?n随机矩阵 rand(1,n) 生成元素服从均匀分布U[0,1]的n维随机行向量 rand(m,1) 生成元素服从均匀分布U[0,1]的m维随机列向量 rand(n) 生成元素服从均匀分布U[0,1]的n?n随机矩阵

randn(m,n) 生成元素服从标准正态分布N(0,1)的m?n随机矩阵 randn(1,n) 生成元素服从标准正态分布N(0,1)的n维随机行向量 randn(m,1) 生成元素服从标准正态分布N(0,1)的m维随机列向量 randn(n) 生成元素服从标准正态分布N(0,1)的n?n随机矩阵 normpdf(a,mu,sigma) 正态分布的概率密度函数在a处的值 normcdf(a,mu,sigma) 正态分布的概率分布函数在a处的值

a=norminv(p,mu,sigma) 已知

?a??f?x?dx?p,求a,其中f(x)为正态分布的概率密度

函数

例1.14.1 随机输入一组数据,求其最大值、最小值、平均值和中间值. >> x=[-43 72 9 16 23 47]; >> max(x) ans = 72 >> min(x) ans = -43

>> mean(x) ans =

20.6667 >> median(x) ans =

19.5000

例1.14.2 随机输入一组数据,求其方差与标准差.

>> x=rand(1,10) %随机生成元素服从均匀分布U[0,1]的10维向量 x =

Columns 1 through 7

0.0592 0.6029 0.0503 0.4154 0.3050 0.8744 0.0150 Columns 8 through 10

0.7680 0.9708 0.9901 >> std(x) ans =

0.3889 >> var(x) ans =

0.1512

例1.14.3 随机输入两组数据,求其协方差与相关系数. >> x=rand(1,5) x =

0.7889 0.4387 0.4983 0.2140 0.6435 >> y=randn(1,5) y =

-0.4326 -1.6656 0.1253 0.2877 -1.1465 >> cov(x,y) ans =

0.0471 -0.0557 -0.0557 0.6926 >> corrcoef(x,y) ans =

1.0000 -0.3083 -0.3083 1.0000 1.16 拟合与回归

拟合(fitting)是数据处理和数值计算的一种重要问题和方法,它要求用一条相对光滑的曲线来近似地描述给定的一组数据点满足的函数关系. 具体提法是:设给定的一组数据点(xi,yi)(i?1,?,n)近似地满足函数关系y?f(x),试确定y?f(x)的具体形式. 这里,y?f(x)称为拟合函数或经验公式,不要求它经过每一个数据点,只需使之与各数据点之间的距离尽可能小即可,其具体形式可经由经验、散点图或数学建模等确定.

解决拟合问题最常用的方法是最小二乘法,其原理是:minS??[f(x)?y]iii?1n2(残差平方和

最小).根据f(x)是否是线性函数,最小二乘拟合可分为线性最小二乘拟合和非线性最小二乘拟合两种形式。

回归是统计分析的一种重要方法,它不仅要对数据进行拟合,还要进行变量选择、参数估计、假设检验、预测、控制等统计分析。此处主要介绍拟合.

在MATLAB中,与拟合和回归有关的命令主要有:

polyfit(x,y,n) n次多项式拟合(n?1时为线性拟合) regress(y,x) 多元线性回归分析(仅进行参数拟合)

nlinfit(x,y,f,beta) 非线性拟合,其中f为函数,beta为f中的参数的初值

例1.16.1 实验测得一组数据(x,y)如下表所示:

表1.1 实验测得数据 x 18 20 22 24 26 28 y 26.86 27.50 28.00 28.87 29.50 30.00 试确定y和x之间的函数关系y?f(x). 输入如下程序:

>> x=[18,20,22,24,26,28,30];

>> y=[26.86,27.50,28.00,28.87,29.50,30.00,30.36]; >> scatter(x,y) %散点图 输出如下结果:

30 30.36 30.53029.52928.52827.52726.518202224262830图1.22 实验测得数据的散点图

由散点图知,y?f(x)近似为线性函数. 拟合:

>> polyfit(x,y,1) %线性拟合 ans =

0.3036 21.4414 因此,y?0.3036x?21.4414.

例1.16.2 用下表中的数据拟合函数c(t)?re?kt中的参数r,k:

表1.2 例1.16.2的数据表 t 0.25 0.5 1 0.5 2 3 c 19.21 18.15 15.36 14.10 12.89 9.32 ?kt

4 7.45 6 5.24 8 3.01 本例可采用“化曲为直”思想:c?re?lnc??kt?lnr,再进行线性拟合即可. >> t=[0.25 0.5 1 0.5 2 3 4 6 8];

>> c=[19.21 18.15 15.36 14.10 12.89 9.32 7.45 5.24 3.01]; >> polyfit(-t,log(c),1) ans =

0.2257 2.9430

e?0.2257t. 因此,lnc??0.2257t?2.9430,即c?18.9727例1.16.3 对下表中的实验数据进行线性回归分析:

表1.3 例1.16.3的实验数据

1097 1284 1502 1394 1303 1555 1917 2051 2111 2286 2311 y 698 872 988 807 738 1025 1316 1539 1561 1765 1762 x 2003 2435 2625 2948 3155 3372 y 1960 1902 2013 2446 2736 2825 输入如下程序: >> x=[1097 1284 1502 1394 1303 1555 1917 2051 2111 2286 2311 2003 2435 2625 2948 3155 3372];

>> y=[698 872 988 807 738 1025 1316 1539 1561 1765 1762 1960 1902 2013 2446 2736 2825];

>> regress(y',x',0.05) 输出如下结果:

x ans =

-460.5282 0.9840

因此,y?0.9840x?460.5282.

例1.16.4 有一组实验数据如下表所示:

表1.4 例1.16.4的实验数据 xy 1 2 3 4 5 6 7 8 9 3.21 2.1 4.8 8.7 5.8 8.32 7.65 5.43 3.32 试用7次多项式拟合之,并检验拟合效果. 输入如下程序: >> x=1:10;

>> y=[3.21 2.1 4.8 8.7 5.8 8.32 7.65 5.43 3.32 2.76]; >> scatter(x,y) >> hold on

>> y1=polyfit(x,y,7) %7次多项式拟合 y1 =

-0.0006 0.0266 -0.4721 4.3792 -22.6858 64.3874 -88.4515 46.0660

>> x0=1:0.05:10;

>> y2=polyval(y1,x0);

>> plot(x,y2,'r') %作出拟合曲线

>> legend('实验数据的散点图','拟合曲线',4) 输出如下结果:

9 8765y4321实验数据的散点图拟合曲线01 2345678910x图1.23 实验数据的散点图及其拟合曲线

图像表明,拟合效果良好.

例1.16.5 用函数y?ax3?b拟合下表中的数据:

表1.5 例1.16.5的数据

10 2.76

x y 输入如下程序: ?2 ?1 ?7.9 ?1.1 0 0 1 1.05 2 8.0 >> x=[-2 -1 0 1 2];

>> y=[-7.9 -1.1 0 1.05 8.0]; >> beta=[0.1 0];

>> fun=inline('A(1)*x.^3+A(2)','A','x'); >> nlinfit(x,y,fun,beta)

输出如下结果:

ans =

0.9950 0.0100

因此,y?0.995x3?0.01.

注 在上述程序中,“inline”是MATLAB中的一个很实用的内置命令函数,利用它可以直接在命令行

中定义函数,而不必非得在M文件中单独定义. inline命令的使用规则是:inline('f(x)','beta',

'x'),其中f(x)为待定义的函数,beta为f(x)中的参数的向量名,x为变量.

例1.16.6 利用以下数据拟合录像带转过的时间t与计数器的读数n之间的关系t表1.6 时间与计数器读数的数据表 0 617 1141 1601 2019 2403 2760 3096 n 0 10 20 30 40 50 60 70 t n 4004 4280 4545 4803 5051 5291 5525 5752 t 100 110 120 130 140 150 160 170 输入如下程序:

?a1n2?a2:

3413 3715 80 90 6061 184 >> clear;

>> format long

>> n=[0,617,1141,1601,2019,2403,2760,3096,3413,3715,4004,4280,4545,4803, 5051,5291,5525,5752,6061];

>> t=[0,10,20,30,40,50,60,70,80,90,100,110,120,130,140,150,160,170,184]; >> fun=inline('a(1)*n.^2+a(2)*n ','a','n'); >> nlinfit(n,t,fun,[0 0]) 输出如下结果: ans =

0.00000261139318 0.01452963191504

9318n?0.01452963191504. 因此,t?0.0000026113除MATLAB外,LINGO和1stOpt两种软件也有很强的数据拟合功能,分别见第二章和第三章.

1.17 插值

与拟合问题不同,插值(interpolation)问题要求对于给定的n个数据点(xi,yi),找到一个函数

2y?f(x),使f(xi)?yi(i?0,1,?,n),其中(xi,yi)为插值节点,f(x)为插值函数,f(xi)?yi为插值条件.

根据插值函数的类型,插值问题可分为代数插值和样条函数插值两种. 代数插值的插值函数为多项式,亦称为多项式插值;样条函数插值的插值函数为样条函数,其中样条(spline)的概念来源于船舶、飞机等设计中描绘光滑曲线用的绘图工具,而数学上的样条函数则是若干段多项式函数光滑连结而成的分段函数.

在MATLAB中,与插值有关的命令主要有:

interp1(x,y,xi,’method’) 一维插值,其中(x,y)为插值节点(x不必为单调数列), xi为被插值点,method为插值方式,包括nearest(最

本文来源:https://www.bwwdw.com/article/o5ev.html

Top