Matlab实现常见的插值算法

本文介绍如何使用 Matlab 实现常见的插值算法:分段三次埃尔米特插值和三次样条插值。

分段三次埃尔米特插值

(1) pchip(x, y, new_x)函数表示分段三次埃尔米特插值,x表示已有的数据 点,y表示数据点代表的纵坐标值,new_x表示从哪些点进行插值

(2) plot函数用法 plot(x1,y1,x2,y2)

线方式: - 实线 :点线 -. 虚点线 - - 波折线

点方式: . 圆点 +加号 * 星号 x x形 o 小圆

颜色: y黄; r红; g绿; b蓝; w白; k黑; m紫; c青

x = -pi:pi; y = sin(x); 
new_x = -pi:0.1:pi;
p = pchip(x,y,new_x);
figure(1); 
plot(x, y, 'o', new_x, p, 'r-')

三次样条插值

spline(x,y,new_x); 表示三次样条插值

x = -pi:pi; 
y = sin(x); 
new_x = -pi:0.1:pi;
p2 = spline(x,y,new_x); %三次样条插值
figure(2);
plot(x,y,'o',new_x,p2,'b-')

扩展:n 维数据的插值

interp1(x, y, xi, ‘method’)函数

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-')

 

总结

(1) 观察以上生成的插值图像,可以看出三次样条插值更加平滑

(2) interp1 函数可以通过改变 method 参数实现多种插值方法

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值