MATLAB实现数据插值

目录

一.理论知识

二.一维插值实例

三.二维插值实例 

四.基于父母的身高预测孩子身高的案例 


一.理论知识

所谓插值,顾名思义,插入数值。很多时候,我们仅有离散点上的数据,这时如果我们想要分析变量之间的函数关系,则无法实现。但如果通过插值处理,当精度足够高时,离散点便可以变成连续的曲线~这就是插值的实用意义。

如下是插值法的原理,大家看一下就好了

常见的插值法有4种:拉格朗日插值、分段线性插值、埃尔米特(Hermite)插值 、三次样条插值

二.一维插值实例

p = interp1 (x, y, new_x, 'spline');

如上的代码即可实现一维插值,不同插值方式只需要修改第4个参数即可。

已知人口数:

年份人口(万)
2009133126
2010133770
2011134413
2012135069
2013135738
2014136427
2015137122
2016137866
2017138639
2018139538

 

x=2009:1:2018;
y=[133126
133770
134413
135069
135738
136427
137122
137866
138639
139538
];
new_x=2009:0.1:2018;
p = interp1 (x, y, new_x, 'spline');
plot(new_x,p)

三.二维插值实例 

首先分享一个沙盘制作问题:

实现代码:

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];
x=0:200:1800;
y=x'
surf(x,y,z);

如上图,未经二维插值处理的图像表面很粗糙。

x1=0:100:1800;
y1=x1';
z1=interp2(x,y,z,x1,y1,'spline');
surf(x1,y1,z1)

 

而经过插值处理后, 表面变得光滑。

如上图,进一步提高插值精度(为上一张的2倍精度),表面变得更加光滑。

 再来看另一个例子,如下图是一个关于油耗数值的散点图:

经过插值处理,三维图变得光滑(数据找不到了唉~,大家只要会套用代码就行)

x1=10:1:120;
n1=interp1(x,y1,x1,'spline');
n2=interp1(x,y2,x1,'spline');
n3=interp1(x,y3,x1,'spline');


figure(1)
plot(x1,n1);
hold on
plot(x1,n2);
hold on
plot(x1,n3);
hold off

拓展:n维数据的插值:

% n维数据的插值
x = -pi:pi; y = sin(x); 
new_x = -pi:0.1:pi;
p = interpn (x, y, new_x, 'spline');
% 等价于 p = spline(x, y, new_x);
figure(3);
plot(x, y, 'o', new_x, p, 'r-')

四.基于父母的身高预测孩子身高的案例 

通过双亲的身高及孩子的身高,采用插值法计算目标男孩的身高。

首先通过随机数法,产生100个双亲平均身高的数据

count =100;
%样本总数
parent1=unifrnd(160,185,100,1);
%随机产生100个,父母平均身高在160cm——185cm的样本

接下来根据高尔顿的模型方程计算对应男孩的身高:

y= 0.8567+0.516*parent1;
%高尔顿的影响方程

接下来进行目标计算:首先提高数据精度,将值扩展到10000个样本;其次,假设父亲183cm,母亲164cm(均值为173.5),作为目标输入,进行计算:

count1=160:0.01:185;
son1=interp1(parent,son,count1,'spline');
%完成插值

最终在插值结果寻找173.5对应的项即可。

附加:对如下的数据实现插值

13579111315
19131945192022052260230223852420
5.123.26.723.362.44.146.434.6
21.92026.827.7323.422.7525.3626.03
24.825.726.82830.43027.630.8
9.319.149.149.299.229.339.169.26
1.82.31.92.12.11.11.51.5
2824262222201923
425.11457.99492.48492.08501.93598.48604.44623.89
628.1639.2648.87640.33616.43614.72507.14580
2824262222201923
30.5836.1949.7560.5856.5860.0667.9967.74
load Z.mat
x=Z(1,:); 
[n,m]=size(Z);

ylab={'周数','轮虫','溶氧','COD','水温','PH值','盐度','透明度','总碱度','氯离子','透明度','生物量'};  
disp(['共有' num2str(n-1) '个指标要进行插值。'])
disp('正在对一号池三次埃尔米特插值,请等待')
P=zeros(11,15);
for i=2:n
    y=Z(i,:);
    new_x=1:15;
    p1=pchip(x,y,new_x);
    subplot(4,3,i-1);
    plot(x,y,'ro',new_x,p1,'-');
    axis([0 15,-inf,inf])  
    %  xlabel('星期')
    ylabel(ylab{i})
    P(i-1,:)=p1;
end
legend('原始数据','三次埃尔米特插值数据','Location','SouthEast')%加上标注,注意要手动在图中拖动标注到图片右下角哦
P = [1:15; P] 

 

  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MATLAB是一种功能强大的计算软件,它可以用于许多领域的数据处理和分析,包括气候数据插值。气候数据插值是指通过已有的气候数据,推算出未观测地区的气候数据。下面我将简要介绍MATLAB在气候数据插值方面的应用。 首先,MATLAB提供了一系列函数和工具箱,用于插值方法的实现。例如,interp1函数可以进行一维插值,interp2函数可以进行二维插值。此外,MATLAB还提供了更高级的插值函数,如griddata函数可以进行多维数据插值。这些函数可以根据已有气候数据的空间或时间分布来推算出未观测区域的气候数据。 其次,MATLAB还提供了各种插值方法的算法实现,例如最邻近插值、线性插值、样条插值等。用户可以根据自己的需求选择合适的插值方法来处理气候数据MATLAB还支持对插值过程进行优化和调节,以提高数据插值的准确性和精度。 此外,MATLAB还可以与其他数据处理和分析工具相结合,例如地理信息系统(GIS)工具箱和统计工具箱,进一步加强对气候数据插值分析。用户可以利用这些工具对插值结果进行空间分析、趋势分析、异常检测等,从而更全面地理解气候数据的变化和分布规律。 综上所述,MATLAB在气候数据插值方面具有广泛的应用。它提供了丰富的函数和工具箱,支持各种插值方法的实现和优化。通过利用MATLAB的这些功能,研究人员和气象工作者可以更好地进行气候数据插值分析,以揭示气候变化的规律和趋势,为气候预测和资源管理提供有力的依据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

32号群青

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值