MATLAB一维插值笔记与应用–十安辰

MATLAB一维插值笔记与应用–十安辰

我们以一个题来了解一维插值,如下:

​ 天文学家在1914年8月份的7次观测中,测得地球与金星之间的距离(单位:m),并取其常用对数值与日期的一组历史数据,如表所示,试推断何时金星与地球的距离的对数值为9.935799

日期 18 20 22 24 26 28 30
距离对数 9.9617724 9.9543645 9.9468069 9.9390950 9.9312245 9.9231915 9.9231915

分析


​ 这个题要求我们求一个日期,注意观察表格中的数据会发现,金星与地球的距离在这几日是不断缩短的,而9.935799这个距离是小于24日的距离但是大于26日的距离,我们初步推测所求日期应该在24日和26日之间,既是25日,我们利用插值来验证25日的距离和9.935799的重合度如何

了解一维插值函数interp1()


用法如下:

语法 说明
y=interp1(x,Y,xi) 由已知点集(x,Y)插值计算xi上的函数值
y=interp1(x,Y,xi) 相当于x=1:length(Y)的interp(x,Y,xi)
y=interp1(x,Y,xi,method) 用指定插值方法计算插值点xi上的函数值
y=interp1(x,Y,xi,method,’extrap’) 对xi中超出已知点集的插值点用指定插值方法计算函数值
y=interp1(x,Y,xi,method,’extrap’,extrapval) 用指定方法插值xi上的函数值,超出已知点集处函数值取extrapval
y=interp1(x,Y,xi,method,’pp’) 用指定方法插值,但返回结果为分段多项式

可选择的插值方法

Methood 描述 注释
‘nearest’ 最邻近插值:插值点处函数值与插值点最邻近的已知点函数值相等- -需要至少 2 个点
最低内存要求
最快计算时间
‘liner’ 分段线性插值:插值点处函数值由连接其最邻近的两侧点的线性函数预测。Matlab中interp1的默认方法。 需要至少 2 个点。
比最近邻点插值需要更多内存和计算时间。
‘spline’ 样条插值:默认为三次样条插值。可用spline函数替代 需要至少 4 个点。
比 ‘pchip’ 需要更多内存和计算时间
‘pchip’ 三次Hermite多项式插值,可用pchip函数替代 需要至少 4 个点。
比 ‘linear’ 需要更多内存和计算时间
‘cubic’ 同’pchip’,三次Hermite多项式插值 此方法目前返回与 ‘pchip’ 相同的结果。

代码


由分析中可知,我们要求出25日金星与地球的距离,需要日期步进由原来的2日改为一日,我们进行如下操作:

x = linspace(18,30,7);%原来的日期
y=[9.9617724 9.9543645 9.9468069 9.9390950 9.9312245 9.9231915 9.9149925];%题目所给日期对应的距离
xi = linspace(18,30,13);%将步近缩小到1日
yi = interp1(x, y, xi, 'spline');%这里我们选择spline方法,取得更加精确的插值
plot(xi, yi,'--');%绘图
yi(8)
%输出ans = 9.935179828013393

MATLAB一维插值笔记与应用–十安辰_第1张图片

答案很接近,误差足够小,我们有理由认为25日时金星与地球的距离的对数值为9.935799

文章仅供参考,请勿照搬照抄!转载请说明出处!
CSDN–十安辰 --链接:https://blog.csdn.net/weixin_44123908

你可能感兴趣的:(MATLAB,北邮专业课)