慕课matlab学习 第五章-030 数据插值应用举例

% 第五节-数据分析与多项式计算
% 数据插值应用举例


% 第四节-matlab 绘图和数据可视化
% 03-多项式计算
% 数据插值应用举例


% 案例1 机动车刹车举例问题

% 题目1 在车辆行驶中
% 从驾驶员看到障碍物开始,到作出判断而采取制动措施停车所需的最短距离叫停车视距。
% 停车视距(d)由三部分组成: 
% 一是驾驶员反应时间内行驶的距离(即反应距离d1) ;
% 二是开始制动到车辆完全停止所行驶的距离(即制动距离d2) ;
% 三是车辆停止时与障碍物应该保持的安全距离。其中,制动距离主要与行驶速度和路面类型有关。
% 根据测试,某型车辆在潮湿天气于沥青路面行驶时,其行车速度(单位: km/h )与制动距离(单位: m)的关系如下表所示。

% 注在测试实验数据的时候:速度和制动距离有得到了以下几个数据
% v=2010150
v=20:10:150     %一共14组数据 单位为km/h
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]

%本次计算中,假设反应时间为10s,安全距离10m(d3) ,请问:
% ①根据某驾驶员的实际视力和视觉习惯,其驾驶时的有效视距为120m,
% 则其在该路面行车时,时速最高不能超过多少( 结果取整) ?
% 2、若以表中数据为参考,设计一条最高时速为125km/h的高速公路 ,
% 则设计人员应该保证驾驶者在公路上任一点的可视距 离为多少米?

% 解:设速度为v,停车视距为d,反应距离为d,制动距离为d2,安全距离为
% d3,反应时间为as,则
% 视距: d=d1+d2+d3
% d1=v*10 (反应时间为10s),得到反应距离
% d2 是制动距离,这个是没有函数表达式的,所以我们使用测试的数据进行插值计算得到,d2的图形表达式
% d3 安全距离=10m

%所以 10v+d2+10=120 最终求解这个东西
% 编程思路
% 第一步:建立速度和停车视距向量。
% 第二步:1为单位,对采样区间内所有速度进行插值,计算出 相应的停车视距。
% 第三步:求出停车视距120所对应的速度。
% 第四步:绘图展示。.

vs=v*(1000/3600); %速度单位转换 ,这里的vs 速度是 m/s
d1=10*vs; %求得不同速度下的反应距离
d2=d2    %不同速度下的制动距离
d3=10    %安全距离
d=d1+d2+d3

vi=20:150 %对速度v进行速度插值得到 vi,[注:原来是间隔是:10,现在是间隔是:1]
di=interp1(v,d,vi,'spline') % 对v和d进行插值函数,得到di的关系
x=abs(di-120);  % abs(di-120)进行该步骤以后,最小的数值就是0,小于该数的会负数变成正数》0
[y,i]=sort(x);   % 升序排列(有小到大排列),排序好的放到y向量中,i为排序后,序号的地址位置
vi(i(1))        % 通过地址,找到对应的速度vi向量
plot(vi,di,vi(i(1)),di(i(1)),'rp') %绘制了两条线,一个是vi 和xi 之间的关系,绘制一个点vi(i(1))di(i(1))
%plot(vi,di)

% 2、若以表中数据为参考,设计一条最高时速为125km/h的高速公路 ,
% 则设计人员应该保证驾驶者在公路上任一点的可视距 离为多少米?
j=find(vi==125) % 找到vi=125km/h 的时候对应的下标
di(j)           % 通过下标找到,对应的di可视距的值,计算结果是di=480.1373
figure(2)
plot(vi,di,125,di(j),'rp') %绘制图形
%也就是说,可视距在480m以上是,可以保证125km/h的高速公路是安全的


% 案例2 沙盘制作问题
% 某地面部队分成红蓝两方在指定的陌生
% 区域(平面区域[02000]x [0, 2000]
% 内,单位: m)进行作战演习。在演习
% 过程中,红方侦查单位已经测得一些地
% 点的高程如下表所示。
% 问题:
% ①根据表中数据,制作军事沙盘。
% 2、在演习范围内,占领最大高地的一
% 方将获得居高临下的优势。请问红方
% 应第- -时间抢占哪块区域。
x=0:200:1800    %x坐标
y=0:200:1800'   %y坐标
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]
figure(3)
surf(x,y,z)  %x,y  因为x是行向量,y是列向量
             %通过,y*x【注:好像不是x*y,可以后面再思考一下】可以得到一个m*n的矩阵.
             % 这里的surf绘图可以看到通过原始采样的数据进行绘图得到的区域图形
             
             
%进行数据插值操作,让地形变得更精细
x1=0:100:1800 ;  %由采样间隔200变为100
y1=x1' ;        %由采样间隔200变为100   
z1=interp2(x,y,z,x1,y1,'spline'); %通过spline 方式进行插值运算操作得到z1
figure(4)
surf(x1,y1,z1)

%进行数据插值操作,让地形变得更精细
x2=0:20:1800 ;  %由采样间隔200变为20
y2=x1' ;        %由采样间隔200变为20  
z2=interp2(x,y,z,x2,y2,'spline'); %通过spline 方式进行插值运算操作得到z2
figure(5)
subplot(1,2,1)
surf(x2,y2,z2)
% 绘制等高线
subplot(1,2,2)
contour(x2,y2,z2,12) % 绘制等高线,分为12个等高线


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值