美文网首页
Matlab中插值函数

Matlab中插值函数

作者: Clemente | 来源:发表于2018-08-09 09:54 被阅读136次

    MATLAB中的插值函数为interp1,其调用格式为: yi= interp1(x,y,xi,'method')

    其中x,y为插值点,yi为在被插值点xi处的插值结果;x,y为向量, 'method'表示采用的插值方法,MATLAB提供的插值方法有几种: 'method'是最邻近插值, 'linear'线性插值; 'spline'三次样条插值; 'cubic'立方插值.缺省时表示线性插值。

    注意:所有的插值方法都要求x是单调的,并且xi不能够超过x的范围。

    例:在一 天24小时内,从零点开始每间隔2小时测得的环境温度数据分别为

    12,9,9,10,18 ,24,28,27,25,20,18,15,13
    问题:推测中午12点(即13点)时的温度.

    x=0:2:24;
    y=[12   9   9   10   18  24   28   27   25   20  18  15  13];
    x1=13;
    y1=interp1(x,y,x1,'spline')
    plot(x,y,'o' ,xi,yi)   %插值得到一天24小时的温度曲线
    

    命令1 interp1

    功能 一维数据插值(表格查找)。该命令对数据点之间计算内插值。它找出一元函数f(x)在中间点的数值。其中函数f(x)由所给数据决定。
    x:原始数据点
    Y:原始数据点
    xi:插值点
    Yi:插值点

    (1)yi = interp1(x,y,xi,method)

    用指定的算法计算插值:
    ’nearest’:最近邻点插值,直接完成计算;
    ’linear’:线性插值(缺省方式),直接完成计算;
    ’spline’:三次样条函数插值。
    ’cubic’:该方法保留单调性与数据的外形;

    x = 0:10; y = x.*sin(x);
    
    xx = 0:.25:10; yy = interp1(x,y,xx);
    
    plot(x,y,'kd',xx,yy)
    

    命令2 interp2

    功能 二维数据内插值
    (1)ZI = interp2(X,Y,Z,XI,YI,method)
    返回矩阵ZI,其元素包含对应于参量XI 与YI(可以是向量、或同型矩阵) 的元素, 即Zi(i,j) ←[Xi(i,j),yi(i,j)]。用户可以输入行向量和列向量Xi 与Yi,此时,输出向量Zi 与矩阵meshgrid(xi,yi)是同型的。
    (2)ZI = interp2(Z,XI,YI)
    缺省地,X=1:n、Y=1:m,其中[m,n]=size(Z)。再按第一种情形进行计算。

    用指定的算法method 计算二维插值:
    ’linear’:双线性插值算法(缺省算法);
    ’nearest’:最临近插值;
    ’spline’:三次样条插值;
    ’cubic’:双三次插值。

    [X,Y] = meshgrid(-3:.25:3);
    Z = peaks(X,Y);
    [XI,YI] = meshgrid(-3:.125:3);
    ZZ = interp2(X,Y,Z,XI,YI);
    surfl(X,Y,Z);hold on;
    surfl(XI,YI,ZZ+15)
    axis([-3 3 -3 3 -5 20]);shading flat
    hold off
    

    命令3 interp3

    (4)VI = interp3(X,Y,Z,V,XI,YI,ZI,method)
    找出由参量X,Y,Z决定的三元函数V=V(X,Y,Z)在点(XI,YI,ZI)的值。
    %用指定的算法method 作插值计算:
    ‘linear’:线性插值(缺省算法);
    ‘cubic’:三次插值;
    ‘spline’:三次样条插值;
    ‘nearest’:最邻近插值。

    [x,y,z,v] = flow(20);
    
    [xx,yy,zz] = meshgrid(.1:.25:10, -3:.25:3, 
    -3:.25:3);
    
    vv = interp3(x,y,z,v,xx,yy,zz);
    
    slice(xx,yy,zz,vv,[6 9.5],[1 2],[-2 .2]); shading interp;colormap cool
    

    命令4 griddata

    功能 数据格点
    (1)ZI = griddata(x,y,z,XI,YI,method)
    用二元函数z=f(x,y)的曲面拟合有不规则的数据向量x,y,z。griddata 将返回曲面z 在点(XI,YI)处的插值。曲面总是经过这些数据点(x,y,z)的输入参量(XI,YI)通常是规则的格点(像用命令meshgrid 生成的一样)。

    用指定的算法method 计算:
    ‘linear’:基于三角形的线性插值(缺省算法);
    ‘cubic’: 基于三角形的三次插值;
    ‘nearest’:最邻近插值法;
    ‘v4’:MATLAB 4 中的griddata 算法。

    命令5 spline

    功能 三次样条数据插值
    格式
    (1)yy = spline(x,y,xx)

    x = [0 2 4 5 8 12 12.8 17.2 19.9 20]; y = exp(x).*sin(x);
    
    xx = 0:.25:20;
    
    yy = spline(x,y,xx);
    
    plot(x,y,'o',xx,yy)
    

    命令6 meshgrid

    功能 生成用于画三维图形的矩阵数据
    格式 [X,Y] = meshgrid(x,y) 将由向量x,y(可以是不同方向的)指定的区域[min(x),max(x) , min(y) , max(y)] 用直线x=x(i),y=y(j) ( i=1,2,…,length(x) ,j=1,2,…,length(y))进行划分。这样,得到了length(x)*length(y)个点,
    这些点的横坐标用矩阵X 表示,X 的每个行向量与向量x 相同;这些点的纵坐标用矩阵Y 表示,Y 的每个列向量与向量y 相同。其中X,Y可用于计算二元函数z=f(x,y)与三维图形中xy 平面矩形定义域的划分或曲面作图。

    [X,Y] = meshgrid(x) %等价于[X,Y]=meshgrid(x,x)。
    [X,Y,Z] = meshgrid(x,y,z) %生成三维阵列X,Y,Z,用于计算三元函数v=f(x,y,z)或三维容积图。

    [X,Y] = meshgrid(1:3,10:14)
    

    相关文章

      网友评论

          本文标题:Matlab中插值函数

          本文链接:https://www.haomeiwen.com/subject/xcjtbftx.html