MATLAB 提供了 interp1(x,y,xq,'Method')函数命令可以进行一维插值,其中一维插值有四种常用的方法,也就是 ‘Method’ 可以选择邻近点插值Nearest,线性插值Linear,三次样条插值Spline和立方插值Pchip


插值效果

邻近点插值(Nearest)

线性插值(Linear)


线性插值法是指使用连接两个已知量的直线来确定在这两个已知量之间的一个未知量的值的方法。

三次样条插值(Spline)

三次样条插值(Cubic Spline Interpolation)简称Spline插值,是通过一系列形值点的一条光滑曲线,数学上通过求解三弯矩方程组得出曲线函数组的过程。

实际计算时还需要引入边界条件才能完成计算。一般的计算方法书上都没有说明非扭结边界的定义,但数值计算软件如Matlab都把非扭结边界条件作为默认的边界条件。

早期工程师制图时,把富有弹性的细长木条(所谓样条)用压铁固定在样点上,在其他地方让它自由弯曲,然后沿木条画下曲线。成为样条曲线。

立方插值(Pchip)

实验代码

下面对MATLAB这四种一维插值(interp1)的方法进行比较。

close all; clear all; clcx=0:0.5:2*pi;   % 插值前的矩阵规模
y=sin(x);%-1-邻近点插值--Nearest interpolation---%
figure('Position',[50,50,500,400],'Name','Nearest');
x1=0:0.1:2*pi;    % 插值后的矩阵规模
y1=interp1(x,y,x1,'Nearest');
plot(x,y,'.','color','r','MarkerSize',20);  hold on;
plot(x1,y1,'.','color','b','MarkerSize',10);    hold off;
xlabel('x','fontsize',20);
ylabel('y','fontsize',20);%-2-线性插值--Linear interpolation---%
figure('Position',[100,100,500,400],'Name','Linear');
x2=0:0.1:2*pi;
y2=interp1(x,y,x1,'Linear');
plot(x,y,'.','color','r','MarkerSize',20);  hold on;
plot(x2,y2,'.','color','b','MarkerSize',10);    hold off;
xlabel('x','fontsize',20);
ylabel('y','fontsize',20);%-3-三次样条插值--Spline interpolation---%
figure('Position',[150,150,500,400],'Name','Spline');
x3=0:0.1:2*pi;
y3=interp1(x,y,x1,'Spline');
plot(x,y,'.','color','r','MarkerSize',20);  hold on;
plot(x3,y3,'.','color','b','MarkerSize',10);    hold off;
xlabel('x','fontsize',20);
ylabel('y','fontsize',20);%-4-立方插值--Pchip interpolation---%
figure('Position',[200,200,500,400],'Name','Pchip');
x4=0:0.1:2*pi;
y4=interp1(x,y,x1,'Pchip');
plot(x,y,'.','color','r','MarkerSize',20);  hold on;
plot(x4,y4,'.','color','b','MarkerSize',10);    hold off;
xlabel('x','fontsize',20);
ylabel('y','fontsize',20);

参考:百度经验:MATLAB一维插值(interp1)四种方法的比较

MATLAB:一维插值算法相关推荐

  1. matlab:一维数组

    1:如何生成一维数组 方法一:用:生成等差向量 >> a=2:3:20 a =2 5 8 11 14 17 20 方法二:linspace() 函数 >> a=linspace ...

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

    MATLAB一维插值笔记与应用–十安辰 我们以一个题来了解一维插值,如下: ​ 天文学家在1914年8月份的7次观测中,测得地球与金星之间的距离(单位:m),并取其常用对数值与日期的一组历史数据,如表 ...

  3. MATLAB一维、二维、三维 标量函数绘图

    MATLAB一维.二维.三维 标量函数绘图 1. 一维标量绘图plot 2. 二维.三维标量绘图 2.1. mesh函数标量绘图 2.2. surf函数标量绘图 2.3. contour(x,y,z) ...

  4. 一维有限元法matlab,一维有限元法解常微分方程

    有matlab程序 一维问题的有限元法一.算法构思 考虑下面的两点边值问题 ''2 (0,1) Fu=-u+u=sin x 1+ =f,x y(0) 0,y(1) 0 设F是一个微分算子,则 1 Fu ...

  5. matlab创建数组对象,MATLAB一维数组(向量)的定义

    在 MATLAB 中,向量和矩阵主要是由数组表示的. 数组运算始终是 MATLAB 的核心内容,并且 MATLAB 区别于其他编程语言最大的优势就是数组计算.这种编程的优势使得计算程序简单.易读,程序 ...

  6. Matlab一维矩阵无法与三维矩阵进行矩阵乘法?

    解决方法 貌似Matlab只支持一维与二维,二维与三维的矩阵乘法.把高维矩阵降维就能解决了,但是需要注意降维之后矩阵乘法是否结果一致.stackoverflow的回答

  7. Matlab一维数组及其应用

    目录 1.一维数组 2.与一维数组相关的函数 3.一维数组在二维绘图中的应用 4.在已存在的图形上添加新图形 5.在一个图形窗口中绘制多个子图 6.一维数组在一元多项式运算中的应用 1.一维数组 数值 ...

  8. matlab一维数组截取,Matlab创建一维数组的具体操作讲解

    原创Matlab创建一维数组的具体操作讲解 编辑:小葫芦 来源:PC下载网时间:2019-12-25 11:54:41 最近不少网友表示自己刚刚入手Matlab软件,还不会创建一维数组,而下面这篇文章 ...

  9. 有限差分法的一维扩散MATLAB,一维扩散方程的有限差分法matlab

    用matlab编程实现一维扩散方程的有限差分法 1 一维扩散方程的有限差分法 --计算物理实验作业七 陈万 物理学2013级 130******** ● 题目: 编程求解一维扩散方程的解 ⎪⎪⎪⎪⎩ ...

最新文章

  1. ConfigParser配置文件
  2. 函数-生成器之斐波拉契数列
  3. C#中的接口 (转自吕振宇老师的blog)
  4. Java匿名内部类总结
  5. [置顶] SQL注入安全分析
  6. zoj 3809 枚举水题 (2014牡丹江网赛 A题)
  7. why we see different http status code like 404, 500. where are they handled
  8. Infinite Fraction Path UVALive - 8207
  9. oci mysql_Oracle常用的OCI函数
  10. C/C++socket send函数MSG_NOSIGNAL
  11. JAVA_pagecontext页面跳转
  12. javascript数据结构与算法---队列
  13. makefile中的wildcard
  14. Difference between natural join and inner join
  15. c#中一般处理程序中使用session
  16. 算法题:Find the closest common ancestor
  17. MessageBox 用法合集
  18. 天牛须算法(BAS)python实现
  19. android qq侧滑,Android实现QQ的侧滑置顶、删除
  20. v-if与v-show(动态显示dom元素)

热门文章

  1. Java Class
  2. Caffeine Cache和Ehcache3.x 进程缓存性能比较
  3. C++ 实现太阳系行星系统(OpenGL)
  4. 遍历hashMap、hashSet、Hashtable
  5. uniapp小程序发布过程中,图片跟音频资源超过200K无法上传
  6. Authentication vs. Authorization 验证与授权
  7. 两个非常有意思的适合桌面使用的Linux task调度器: BFS和MuqSS
  8. 什么是RS485总线?怎么使用RS485总线?一文了解清楚
  9. Oracle删表报错ora00054,【Oracle】ORA-00054 错误解决方法
  10. MySQL Workbench使用教程简介