A 数据统计分析
A.a 求最大值与最小元素
例子:x = [-43,72,9,16,23,47]; y = max(x) [y,k] = max(x)
(3)中的[]不可省略
例子:A = [13,-56,78;25,63,-235;78,25,563;1,0,-1]; max(A) max(A,[],2) max(max(A))
A.b 求平均值和中值
mean() % 求算术平均值
median() % 求中值
x = [1200,800,1500,1000,5000];
mean(x)
median(x)
A.c 求和与求积
sum() % 求和
prod() % 求积
A.d 累加和与累乘积
x = [1,2,3,4,5,6,7,8,9,10]
y1 = prod(x)
y2 = cumprod(x)
A.e 求标准差与相关系数
x = randn(50000,4); y1 = std(x,0,1) y2 = std(x,1,1) x1 = x'; y3 = std(x1,0,2) y4 = std(x1,1,2)
A.f 排序
例子:
A = [1,-8,5;4,12,6;13,7,-13];
sort(A)
sort(A,2,'descend')
[X,I] = sort(A)
B 多项式计算
B.a 多项式的表示
B.b 多项式的四则运算
例子:f = [3,-5,0,-7,5,6];g = [3,5,-3];g1 = [0,0,0,g];f + g1f- g1conv(f,g)
B.c 多项式的求导(polyder)
例子:a = [3,1,0,-6];b = [1,2];polyder(a)c = polyder(a,b)[p,q] = polyder(a,b)
B.d 多项式积分(polyint)
q = polyint(p,k)
使用积分常量 k 返回 p 中系数所表示的多项式积分。
示例:计算定积分
B.e 多项式的求值(polyval;polyvalm)
a = [1,8,0,0,-10];x = [-1,1.2;2,-1.8];y1 = polyval(a,x)y2 = polyvalm(a,x)
B.f 多项式的求根(roots;poly)
a = [1,8,0,0,-10];x = roots(a)p = ploy(x)
p = [-38.89,126.11,-3.42];q = polyder(p);r = roots(q);y = polyval(p,r);x = 0:0.1:2;plot(x,polyval(p,x),r,y,'rp')
C 数据插值(interp)
C.a 引例-零件加工问题
x = [0,3,5,7,9,11,12,13,14,15];y = [0,1.2,1.7,2.0,2.1,2.0,1.8,1.2,1.0,1.6];x1 = 0:0.5:15;y1 =interp1(x,y,x1,'spline');plot(x1,y1)
C.b 数据插值的计算机制
C.c 数据插值的实现方法
引例用四种方法插值:
C.d 应用案例1-粮储仓的通风控制问题
在某粮情自动测控系统中,根据粮温、粮湿计算平衡点湿度,与大气湿度进行比较,再根据通风模拟情况决定是否自动进行通风。已测得平衡点湿度与粮温、粮湿关系的部分数据如下表,请推算相应范围内温度每变化1度、湿度每变化1个点的平衡点湿度。
平衡点湿度与粮温、粮湿度关系表
(第一列:粮温,第一行:粮湿,其余:平衡点湿度)
粮温\粮湿 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 |
---|---|---|---|---|---|---|---|---|
0 | 8.9 | 10.32 | 11.3 | 12.5 | 13.9 | 15.3 | 17.8 | 21.3 |
5 | 8.7 | 10.8 | 11 | 12.1 | 13.2 | 14.8 | 16.55 | 20.8 |
10 | 8.3 | 9.65 | 10.88 | 12 | 13.2 | 14.6 | 16.4 | 20.5 |
15 | 8.1 | 9.4 | 10.7 | 11.9 | 13.1 | 14.5 | 16.2 | 20.3 |
20 | 8.1 | 9.2 | 10.8 | 12 | 13.2 | 14.8 | 16.9 | 20.9 |
x=20:10:90;y=(0:5:20)';z=[8.9,10.32,11.3,12.5,13.9,15.3,17.8,21.3;8.7,10.8,11,12.1,13.2,14.8,16.55,20.8;8.3,9.65,10.88,12,13.2,14.6,16.4,20.5;8.1,9.4,10.7,11.9,13.1,14.5,16.2,20.3;8.1,9.2,10.8,12,13.2,14.8,16.9,20.9];xi=20:90;yi=(0:20)';zi=interp2(x,y,z,xi,yi,'spline');surf(xi,yi,zi)1234567
C.e 应用案例2-机动车刹车距离问题
在车辆行驶中,从驾驶员看到障碍物开始,到作出判断而采取制动措施停车所需的最短距离叫停车视距。停车视距由三部分组成:一是驾驶员反应时间内行驶的距离(即反应距离);二是开始制动到车辆完全停止所行驶的距离(即制动距离);三是车辆停止时与障碍物应该保持的安全距离。其中,制动距离主要与行驶速度和路面类型有关。根据测试,某型车辆在潮湿天气于沥青路面行驶时,其行车速度(单位:km/h)与制动距离(单位:m)的关系如下表所示。
速度 | 20 | 30 | 40 | 50 | 60 | 70 | 80 | 90 | 100 | 110 | 120 | 130 | 140 | 150 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
制动距离 | 3.15 | 7.08 | 12.59 | 19.68 | 28.34 | 38.57 | 50.4 | 63.75 | 78.71 | 95.22 | 113.29 | 132.93 | 154.12 | 176.87 |
假设驾驶员的反应时间为10s,安全距离为10m。请问:
①根据某驾驶员的实际视力和视觉习惯,其驾驶时的有效视距为120m,则其在该路面行车时,时速最高不能超过多少(结果取整)?
②若以表中数据为参考,设计一条最高时速为125km/h的高速公路,则设计人员应该保证驾驶者在公路上任一点的可视距离为多少米?
设速度为v vv,停车视距为d dd,反应距离为d 1 d_1d1,制动距离为d 2 d_2d2,安全距离为d 3 d_3d3,反应时间为a s a_sa**s,则
d = d 1 + d 2 + d 3 d=d_1+d_2+d_3d=d1+d2+d3其中,d 1 = a s v d_1=a_svd1=a**sv,d 2 d_2d2为v的函数,d 3 d_3d3已知。
第一问:根据某驾驶员的实际视力和视觉习惯,其驾驶时的有效视距为120m,则其在该路面行车时,时速最高不能超过多少(结果取整)?
已知反应时间为10s,安全距离为10m,可采用解方程方法:
10 v + d 2 + 10 = 120 10v+d_2+10=12010v+d2+10=120存在的问题是,d 2 d_2d2是v vv的函数,但是函数关系未知,方程不可解。
下面考虑数据插值方法,以表格中的数据为样本,进行数据插值,计算出与120m的停车视距所对应的速度指标。
编程思路:
第一步:建立速度和停车视距向量。
第二步:以1为单位,对采样区间内所有速度进行插值,计算出相应的停车视距。
第三步:求出停车视距120所对应的速度。
第四步:绘图展示。
如何根据停车视距120找到对应的速度?
第一步:令代表停车视距的向量di减去120,再取绝对值,得到一个新的向量x。
第二步:将x按升序排列,并记录最小元素的序号,该序号即为停车视距120所对应的速度数据在向量vi中的序号。
第三步:根据序号取得速度数据。
v=20:10:150;vs=v.*(1000/3600);d1=10.*vs;d2=[3.15,7.08,12.59,19.68,28.34,38.57,50.4,63.75,78.71,95.22,113.29,132.93,154.12,176.87];d3=10;d=d1+d2+d3;vi=20:1:150;di=interp1(v,d,vi,'spline');x=abs(di-120);[y,i]=sort(x);vi(i(1))plot(vi,di,vi(i(1)),di(i(1)),'rp')123456789101112
停车视距的增长随着车速增加呈非线性增长。速度越快,要求视线越远。
第二问:设计一条最高时速为125km/h的高速公路,则设计人员应该保证驾驶者在公路上任一点的可视距离为多少米?
>>j=find(vi==125);>>di(j)>>ans= 480.14>>plot(vi,di,125,480.14,'rp')12345
C.f 应用案例3-沙盘制作问题
某地面部队分成红蓝两方在指定的陌生区域(平面区域[0,2000]*[0,2000]内,单位:m)进行作战演习。在演习过程中,红方侦查单位已经测得一些地点的高程如下表所示。
y/x | 0 | 200 | 400 | 600 | 800 | 1000 | 1200 | 1400 | 1600 | 1800 |
---|---|---|---|---|---|---|---|---|---|---|
0 | 2000 | 2000 | 2001 | 1992 | 1954 | 1938 | 1972 | 1995 | 1999 | 1999 |
200 | 2000 | 2002 | 2006 | 1908 | 1533 | 1381 | 1728 | 1959 | 1998 | 2000 |
400 | 2000 | 2005 | 2043 | 1921 | 977 | 897 | 1310 | 1930 | 2003 | 2000 |
600 | 1997 | 1978 | 2009 | 2463 | 2374 | 1445 | 1931 | 2209 | 2050 | 2003 |
800 | 1992 | 1892 | 1566 | 1971 | 2768 | 2111 | 2653 | 2610 | 2121 | 2007 |
1000 | 1991 | 1875 | 1511 | 1556 | 2221 | 1986 | 2660 | 2601 | 2119 | 2007 |
1200 | 1996 | 1950 | 1797 | 2057 | 2849 | 2798 | 2608 | 2303 | 2052 | 2003 |
1400 | 1999 | 1999 | 2079 | 2685 | 3390 | 3384 | 2781 | 2165 | 2016 | 2000 |
1600 | 2000 | 2002 | 2043 | 2271 | 2668 | 2668 | 2277 | 2049 | 2003 | 2000 |
1800 | 2000 | 2000 | 2004 | 2027 | 2067 | 2067 | 2027 | 2004 | 2000 | 2000 |
①根据表中数据,制作军事沙盘。
②在演习范围内,占领最大高地的一方将获得居高临下的优势。请问红方应第一时间抢占哪块区域。
解题思路:
第一问:用二维插值估算数据,以方便制作军事沙盘。
第二问:在插值的基础上,绘制等高线图,找到最大高地。
x=0:200:1800;y=x';z=[2000,2000,2001,1992,1954,1938,1972,1995,1999,1999;2000,2002,2006,1908,1533,1381,1728,1959,1998,2000;2000,2005,2043,1921,977,897,1310,1930,2003,2000;1997,1978,2009,2463,2374,1445,1931,2209,2050,2003;1992,1892,1566,1971,2768,2111,2653,2610,2121,2007;1991,1875,1511,1556,2221,1986,2660,2601,2119,2007;1996,1950,1797,2057,2849,2798,2608,2303,2052,2003;1999,1999,2079,2685,3390,3384,2781,2165,2016,2000;2000,2002,2043,2271,2668,2668,2277,2049,2003,2000;2000,2000,2004,2027,2067,2067,2027,2004,2000,2000];surf(x,y,z);x1=0:100:1800;y1=x1';z1=interp2(x,y,z,x1,y1,'spline');surf(x1,y1,z1);x2=0:50:1800;y2=x2';z2=interp2(x1,y1,z1,x2,y2,'spline');surf(x2,y2,z2);contour(x2,y2,z2,12)12345678910111213141516171819202122
从图中可以看出最大高地的位置。
D 曲线拟合(plotfit)
插值要求逼近函数在采样点的数值与原函数相等,然而在实验中,测量的数据不一定准确,如果强求逼近函数过样本点,显然是不合理的。使用曲线拟合可以避免这种情况。
D.a 引例-人口预测问题
x = 1790:10:2010;y = [3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,38.6,50.2,63,76,92,105.7,122.8,131.7,150.7,179.3,203.2,226.5,248.7,281.4,308.7];plot(x,y,'*');%生成多项式 拟合曲线p = polyfit(x,y,3);%计算在2020处的值polyval(p,2020)%画两个图plot(x,y,'*',x,polyval(p,x))
D.b 曲线拟合的原理
D.c 曲线拟合的实现方法
股票预测
x = [2,3,4,5,8,9,10,11,12,15,16,17,18,19,22,23,24,25,26,29,30];y = [7.74,7.84,7.82,7.78,7.91,7.97,7.9,7.76,7.9,8.04,8.06,8.11,8.08,8.13,8.03,8.01,8.06,8.0,8.3,8.41,8.28];plot(x,y,'*')p = polyfit(x,y,3);plot(x,y,'*',x,polyval(p,x))%时间太长 选一部分x1 = [31,32,33];%替代xi = [x,x1];plot(x,y,'*',xi,polyval(p,xi));y1 = [8.27,8.17,9.54];%原来的 推测出来的 真实的plot(x,y,'*',xi,polyval(p,xi),x1,y1,'rp')
D.d 算法参数优化问题
多样性和收敛性的交点
x = 0.03:0.03:0.3;y1 = [0.01,0.01,0.02,0.03,0.06,0.07,0.13,0.17,0.25,0.37];y2 = [0.85,0.76,0.68,0.62,0.56,0.52,0.49,0.46,0.43,0.39];plot(x,y1,'*',x,y2,'o')p1 = polyfit(x,y1,2);p2 = polyfit(x,y2,2);p = p1-p2;xi = roots(p);xj = 0:0.03:0.36;yj1 = polyval(p1,xj);yj2 = polyval(p2,xj);%第一个根为负数 选第二个yi = polyval(p1,xi(2))plot(x,y1,'*',x,y2,'o',xj,yj1,xj,yj2,xi(2),yi,'rp')
D.e 实际应用-家庭储蓄规律问题
以下是某市家庭收入x与家庭储蓄y之间的一组调查数据(单位:万元),试建立x与y的线性函数经验公式。
x | 0.6 | 1.0 | 1.4 | 1.8 | 2.2 | 2.6 | 3.0 | 3.4 | 3.8 | 4 |
---|---|---|---|---|---|---|---|---|---|---|
y | 0.08 | 0.22 | 0.31 | 0.4 | 0.48 | 0.56 | 0.67 | 0.75 | 0.8 | 1.0 |
x=[0.6,1.0,1.4,1.8,2.2,2.6,3.0,3.4,3.8,4];y=[0.08,0.22,0.31,0.4,0.48,0.56,0.67,0.75,0.8,1.0];p=polyfit(x,y,1)plot(x,y,'*',x,polyval(p,x))p=0.2390-0.0418 %经验公式:y=0.239x-0.0418123456
F 数据插值与曲线拟合的比较
功能
- 估算数据
- 预测趋势
- 总结规律
相同点
- 都属于函数逼近的方法;
- 都可以通过离散有限的数据估算其他数据。
不同点
- 实现方法上,数据插值要求逼近函数经过样本点,而曲线拟合只需要每个数据点的误差平方和最小;
- 结果形式上,数据插值往往没有统一的逼近函数,而数据拟合有统一的逼近函数;
- 侧重点上,数据插值一般用于样本点区间内的数据计算,而曲线拟合不光可以估算区间内的数据,也可以对区间外的进行预测;
- 应用场合上,如果样本点为精确数据,使用数据插值比较好,如果数据为统计数据,则使用曲线拟合更优。