拉格朗日(lagrange)插值(MATLAB实现)
Author:HanDi
上海某高校遥感专业 工科男
相信积微者速成,相信分享的力量
CSDN@这可真是难为我了
在学习气溶胶光学厚度(AOD)反演算法时,遇到了插值方法选择上的难题。对于AOD反演一般多使用线性插值的方法,但是出来的AOD存在高值区高演的现象。
因此,我尝试选用Lagrange插值方法。从学习原理到参考别的博主代码,到自己动手写出小模块。真的很开心。
当然,Lagrange插值不止这一种用途,至于如何耦合到自己的程序。各位可以试着理解并动手实践。
新手写技术博客没有什么经验,如有不足,还请大家多多包涵,欢迎大家私信交流 ^ _ ^ !!!一起进步~
以后会分享一些地理数据处理和数据挖掘的示例
下面是完整代码,我的MATLAB版本是 matlab2021a
这里是参考内容,供大家系统学习
.html
下面是源码和示例数据,自取
链接:=w43u
提取码:w43u
%主程序
clc
clear
xcoordinate=fopen('testx.txt','r');
X = fscanf(xcoordinate,'%f');
fclose(xcoordinate);
ycoordinate=fopen('testy.txt','r');
Y = fscanf(ycoordinate,'%f');
fclose(ycoordinate);
xinsert=fopen('xinsertpoint.txt','r');
x = fscanf(xinsert,'%f');
fclose(xinsert);
y = lagrange(X,Y,x);
y1 = sin(x);
hold on
plot(X, Y,'or' , x, y, '.k', x, y1, '-b');
legend('样本点','sin(x)','拉格朗日插值估算');
%Lagrange插值函数
function y=lagrange(x0,y0,x)
n=length(x0);m=length(x);
for i=1:mz=x(i);s=0.0;for k=1:np=1.0;for j=1:nif j~=kp=p*(z-x0(j))/(x0(k)-x0(j));endends=p*y0(k)+s;endy(i)=s;
end
插值效果如下图
如有错误,欢迎评论,私信,会及时改正
拉格朗日(lagrange)插值(MATLAB实现)
Author:HanDi
上海某高校遥感专业 工科男
相信积微者速成,相信分享的力量
CSDN@这可真是难为我了
在学习气溶胶光学厚度(AOD)反演算法时,遇到了插值方法选择上的难题。对于AOD反演一般多使用线性插值的方法,但是出来的AOD存在高值区高演的现象。
因此,我尝试选用Lagrange插值方法。从学习原理到参考别的博主代码,到自己动手写出小模块。真的很开心。
当然,Lagrange插值不止这一种用途,至于如何耦合到自己的程序。各位可以试着理解并动手实践。
新手写技术博客没有什么经验,如有不足,还请大家多多包涵,欢迎大家私信交流 ^ _ ^ !!!一起进步~
以后会分享一些地理数据处理和数据挖掘的示例
下面是完整代码,我的MATLAB版本是 matlab2021a
这里是参考内容,供大家系统学习
.html
下面是源码和示例数据,自取
链接:=w43u
提取码:w43u
%主程序
clc
clear
xcoordinate=fopen('testx.txt','r');
X = fscanf(xcoordinate,'%f');
fclose(xcoordinate);
ycoordinate=fopen('testy.txt','r');
Y = fscanf(ycoordinate,'%f');
fclose(ycoordinate);
xinsert=fopen('xinsertpoint.txt','r');
x = fscanf(xinsert,'%f');
fclose(xinsert);
y = lagrange(X,Y,x);
y1 = sin(x);
hold on
plot(X, Y,'or' , x, y, '.k', x, y1, '-b');
legend('样本点','sin(x)','拉格朗日插值估算');
%Lagrange插值函数
function y=lagrange(x0,y0,x)
n=length(x0);m=length(x);
for i=1:mz=x(i);s=0.0;for k=1:np=1.0;for j=1:nif j~=kp=p*(z-x0(j))/(x0(k)-x0(j));endends=p*y0(k)+s;endy(i)=s;
end
插值效果如下图
如有错误,欢迎评论,私信,会及时改正