第五节-matlab 绘图和数据可视化

03-数据插值




% 第四节-matlab 绘图和数据可视化
% 02-多项式计算
% 数据插值

% 用于测试数据来添加额外的数据进行插值
% 在后面可以得到更加平滑的曲面
% 函数 ibterp1()
% interp1():-维插值函数。
% 调用格式: Y1=interp1(X,Y,X1,method)
% 根据X、Y的值,计算函数在X1处的值。其中,X、Y是两个等长的E知向量,分别表示采样点
% 和采样值。X1是一个向量或标量,表示要插值的点。
% method :
%   1、linear:线性插值,默认方法。将与插值点靠近的两个数据点用直线
% 连接,然后在直线上选取对应插值点的数据。
%   2、nearest: 最近点插值。选择最近样本点的值作为插值数据。
%   3、pchip:分段3次埃尔米特插值。采用分段三次多项式,除满足插值
% 条件,还需满足在若干节点处相邻段插值函数的一-阶导数相等,使
% 得曲线光滑的同时,还具有保形性。
%   4、spline: 3次样条插值。每个分段内构造一个三次多项式, 使其插值
% 函数除满足插值条件外,还要求在各节点处具有连续的- -阶和二_阶导数。


% 为什么这两种插值方法都用3次多项式而不用更高次的?
% 答:多项式次数并非越高越好。次数越高,越容易产生震荡
% 而偏离原函数,这种现象称为龙格( Runge )现象。




% 已知 x,y ,加入插值,得到x1,y1 ,绘制plot(x1,y1)
x=[0,3,5,7,8,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]
subplot(1,2,1)
plot(x,y)
title('加入插值前图形') %有凹凸感,不够细腻
x1=[0:0.1:15];
y1=interp1(x,y,x1,'spline'); %添加插值函数,求得y1,注:采样的是 3次样条插值
subplot(1,2,2)
plot(x1,y1)
title('加入插值后的图形') %曲线较为平滑

figure(2)
subplot(2,2,1)
plot(x1,y1)     % 绘制 y1=interp1(x,y,x1,'spline') 3次样条插值函数的值
title('spline方式图形') %曲线较为平滑
%
y2=interp1(x,y,x1,'liner'); %添加插值函数,求得y1,注:采用线性插值
subplot(2,2,2)
plot(x1,y2)     % 绘制 y1=interp1(x,y,x1,'liner') 3次样条插值函数的值
title('liner方式 插值后的图形') %曲线较为平滑
%
y3=interp1(x,y,x1,'nearest');     %添加插值函数,求得y1,注:采用线性插值
subplot(2,2,3)
plot(x1,y3)                     % 绘制 y1=interp1(x,y,x1,'nearest') 3次样条插值函数的值
title('nearest方式 插值后的图形') %曲线较为平滑
%
y4=interp1(x,y,x1,'spline');     %添加插值函数,求得y1,注:采用线性插值
subplot(2,2,4)
plot(x1,y4)                     % 绘制 y1=interp1(x,y,x1,'nearest') 3次样条插值函数的值
title('spline方式 插值后的图形') %曲线较为平滑


%   四种方法的比较:
%   线性插值和最近点插值方法比较简单。
%   其中线性插值方法的计算量与样本点n无关。n越大,误差越小。
%   3次埃尔米特插值和3次样条插值都能保证曲线的光滑性。
%   相比较而言, 3次埃尔米特插值具有保形性;
%3次样条插值要求其二阶导数也连续,所以插值函数的性态更好。


% interp2(): 2维插值函数
% 调用格式:
% Z1=interp2(X,Y,Z,X1,Yl,method)
% 其中,X、Y是两个向量,表示两个参数的采样点, Z是
% 采样点对应的函数值。X1、 Y1是两个标量或向量,表示要插值的点。



% eg:在某粮情自动测控系统中,根据粮温、粮湿计算平衡点湿度,与大气湿度进行
% 比较,再根据通风模拟情况决定是否自动进行通风。已测得平衡点湿度与粮温、
% 粮湿关系的部分数据如下表,请推算相应范围内温度每变化1度、湿度每变化1% 点的平衡点湿度。

x5=20:10:90 %表示湿度度 ,每次采样湿度间隔10
y5=(0:5:20)'    %注:有一个【'】冒号,表示转置,这里表示他是一个列向量
                %物理含义是表示的,是温度变化,每次变化 5度
z5=[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.4,   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(x5,y5,z5,xi,yi)  %二维插值函数
figure(4)
surf(xi,yi,zi)      %二维插值函数后得到的图形














更多文章请关注《万象专栏》