精华内容
下载资源
问答
  • matlab 插值

    2013-05-29 20:51:50
    matlab 插值源代码,帮知你了解插值,交流学习。
  • matlab插值

    2013-04-26 10:26:08
    matlab插值PPT学习资料,可以学习学习参考参考
  • MATLAB插值

    2017-11-21 22:55:00
    转自原文MATLAB插值 插值问题 在应用领域中,由有限个已知数据点,构造一个解析表达式,由此计算数据点之间的函数值,称之为插值。 实例:海底探测问题 某公司用声纳对海底进行测试,在5×5海里的坐标点上测得海底...

    转自原文 MATLAB插值

    插值问题

    在应用领域中,由有限个已知数据点,构造一个解析表达式,由此计算数据点之间的函数值,称之为插值。

    实例:海底探测问题

    某公司用声纳对海底进行测试,在5×5海里的坐标点上测得海底深度的值,希望通过这些有限的数据了解更多处的海底情况。并绘出较细致的海底曲面图。

    一、一元插值

    一元插值是对一元数据点(xi,yi)进行插值。

    1.  线性插值:由已知数据点连成一条折线,认为相临两个数据点之间的函数值就在这两点之间的连线上。一般来说,数据点数越多,线性插值就越精确。

    调用格式:yi=interp1(x,y,xi,’linear’)  %线性插值

    zi=interp1(x,y,xi,’spline’)  %三次样条插值

    wi=interp1(x,y,xi,’cubic’)  %三次多项式插值

    说明:yi、zi、wi为对应xi的不同类型的插值。x、y为已知数据点。

    例1已知数据:

    x

    0

    .1

    .2

    .3

    .4

    .5

    .6

    .7

    .8

    .9

    1

    y

    .3

    .5

    1

    1.4

    1.6

    1.9

    .6

    .4

    .8

    1.5

    2

    求当xi=0.25时的yi的值。

    程序:

    x=0:.1:1;

    y=[.3 .5 1 1.4 1.6 1 .6 .4 .8 1.5 2];

    yi0=interp1(x,y,0.025,'linear')

    xi=0:.02:1;

    yi=interp1(x,y,xi,'linear');

    zi=interp1(x,y,xi,'spline');

    wi=interp1(x,y,xi,'cubic');

    plot(x,y,'o',xi,yi,'r+',xi,zi,'g*',xi,wi,'k.-')

    legend('原始点','线性点','三次样条','三次多项式')

    结果:yi0 =  0.3500

    MATLAB插值与拟合 - 飞扬 Youth - 浇灌一处绿色的风景

     

    要得到给定的几个点的对应函数值,可用:

    xi =[ 0.2500  0.3500  0.4500]

    yi=interp1(x,y,xi,'spline')

    结果:

    yi =1.2088  1.5802  1.3454

    (二) 二元插值

    二元插值与一元插值的基本思想一致,对原始数据点(x,y,z)构造见世面函数求出插值点数据(xi,yi,zi)。

    一、单调节点插值函数,即x,y向量是单调的。

    调用格式1:zi=interp2(x,y,z,xi,yi,’linear’)

    ‘liner’ 是双线性插值 (缺省)

    调用格式2:zi=interp2(x,y,z,xi,yi,’nearest’)

    ’nearest’ 是最近邻域插值

    调用格式3:zi=interp2(x,y,z,xi,yi,’spline’)

    ‘spline’是三次样条插值

    说明:这里x和y是两个独立的向量,它们必须是单调的。z是矩阵,是由x和y确定的点上的值。z和x,y之间的关系是z(i,:)=f(x,y(i)) z(:,j)=f(x(j),y) 即:当x变化时,z的第i行与y的第i个元素相关,当y变化时z的第j列与x的第j个元素相关。如果没有对x,y赋值,则默认x=1:n, y=1:m。n和m分别是矩阵z的行数和列数。

    例2已知某处山区地形选点测量坐标数据为:

    x=0  0.5  1  1.5  2  2.5  3  3.5  4  4.5  5

    y=0  0.5  1  1.5  2  2.5  3  3.5  4  4.5  5  5.5  6

    海拔高度数据为:

    z=89 90 87 85 92 91 96 93 90 87 82

       92 96 98 99 95 91 89 86 84 82 84

       96 98 95 92 90 88 85 84 83 81 85

       80 81 82 89 95 96 93 92 89 86 86

       82 85 87 98 99 96 97 88 85 82 83

       82 85 89 94 95 93 92 91 86 84 88

       88 92 93 94 95 89 87 86 83 81 92

       92 96 97 98 96 93 95 84 82 81 84

       85 85 81 82 80 80 81 85 90 93 95

       84 86 81 98 99 98 97 96 95 84 87

       80 81 85 82 83 84 87 90 95 86 88

       80 82 81 84 85 86 83 82 81 80 82

       87 88 89 98 99 97 96 98 94 92 87

    其地貌图为:

    MATLAB插值与拟合 - 飞扬 Youth - 浇灌一处绿色的风景

    对数据插值加密形成地貌图。

    程序:

    x=0:.5:5;

    y=0:.5:6;

    z=[89 90 87 85 92 91 96 93 90 87 82

       92 96 98 99 95 91 89 86 84 82 84

       96 98 95 92 90 88 85 84 83 81 85

       80 81 82 89 95 96 93 92 89 86 86

       82 85 87 98 99 96 97 88 85 82 83

       82 85 89 94 95 93 92 91 86 84 88

       88 92 93 94 95 89 87 86 83 81 92

       92 96 97 98 96 93 95 84 82 81 84

       85 85 81 82 80 80 81 85 90 93 95

       84 86 81 98 99 98 97 96 95 84 87

       80 81 85 82 83 84 87 90 95 86 88

       80 82 81 84 85 86 83 82 81 80 82

       87 88 89 98 99 97 96 98 94 92 87];

    mesh(x,y,z)  %绘原始数据图

    xi=linspace(0,5,50);  %加密横坐标数据到50个

    yi=linspace(0,6,80);  %加密纵坐标数据到60个

    [xii,yii]=meshgrid(xi,yi);  %生成网格数据

    zii=interp2(x,y,z,xii,yii,'cubic');  %插值

    mesh(xii,yii,zii)  %加密后的地貌图

    hold on     % 保持图形

    [xx,yy]=meshgrid(x,y);  %生成网格数据

    plot3(xx,yy,z+0.1,'ob')  %原始数据用‘O’绘出

    MATLAB插值与拟合 - 飞扬 Youth - 浇灌一处绿色的风景

     

    2、二元非等距插值

    调用格式:zi=griddata(x,y,z,xi,yi,’指定插值方法’)

    插值方法有: linear          % 线性插值   (默认)

                bilinear     % 双线性插值

                cubic        % 三次插值

                bicubic      % 双三次插值

                nearest      % 最近邻域插值

    例:用随机数据生成地貌图再进行插值

    程序:

    x=rand(100,1)*4-2;

    y=rand(100,1)*4-2;

    z=x.*exp(-x.^2-y.^2);

    ti=-2:.25:2;

    [xi,yi]=meshgrid(ti,ti); % 加密数据

    zi=griddata(x,y,z,xi,yi);% 线性插值

    mesh(xi,yi,zi)

    hold on

    plot3(x,y,z,'o' 

     

    没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。






        本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/7063516.html,如需转载请自行联系原作者



    展开全文
  • Matlab插值

    2020-07-07 14:57:08
    插值

    1.一维插值函数
    matlab中有现成的一维插值函数interp1
    语法为

    y=interp1(x0,y0,x,'method')
    

    其中method指定插值的方法,默认为线性插值。其值可为

    插值方法 解释
    nearest 最近项插值
    linear 线性插值
    spline 立方样条插值
    cubic 立方插值

    所有的插值方法要求x0是单调的。

    2.三次样条插值
    在matlab中数据点称为断点。如果三次样条插值没有边界条件,最常用的方法就是采用非扭结(not-a-knot)条件
    matlab中三次样条插值有如下函数

    y=interp1(x0,y0,x,'spline');
    y=spline(x0,y0,x);
    y=csape(x0,y0,conds);
    y=csape(x0,y0,conds,valconds);y=fnval(pp,x);
    

    其中:x0,y0是已知数据点;x是插值点;y是插值点的函数值。

    对于三次样条插值,提倡使用函数csage。csage的返回值是pp形式,要求插值点的函数值必须调用函数fnval。

    pp=esape(x0,y0);%
    

    式中:使用默认的边界条件,即Lagrange边界条件

    pp=esape(x0,y0,conds,valconds);
    

    式中:conds指定插值的边界条件,其值可为

    conds 解释
    complete 边界为一阶导数,一阶导数的值在valconds参数中给出,若忽略valconds参数,则按照默认情况处理
    not-a-knot 非扭结条件
    periodic 周期条件
    second 边界为二阶导数,二阶导数的值在valconds参数中给出,若忽略valconds参数,二阶导数的默认值为[0,0]
    variational 设置边界的二阶导数为[0,0]

    对于一些特殊的边界条件,可以通过conds的一个1*2的矩阵来表示,conds元素的取值为0、1、2.

    插值举例

    结果
    在这里插入图片描述
    结果分析:分段线性插值的光滑性较差(图1),建议选用三次样条插值。

    matlab代码

    clc;clear;
    x0=[0 3 5 7 9 11 12 13 14 15];
    y0=[0,1.2 1.7 2.0 2.1 2.0 1.8 1.2 1.0 1.6];
    
    x=0:0.1:15;
    y1=interp1(x0,y0,x);%一维插值,默认线性插值
    
    y2=interp1(x0,y0,x,'spline');%立方样条插值
    
    pp1=csape(x0,y0);%三次样条插值,默认使用Lagrange边界条件
    y3=fnval(pp1,x);
    
    pp2=csape(x0,y0,'second');%三次样条插值,边界为2阶导数
    y4=fnval(pp2,x);
    [x',y1',y2',y3',y4']%输出结果
    
    %画图
    subplot(1,3,1)
    plot(x0,y0,'+',x,y1);
    title("Piecewise linear");
    
    subplot(1,3,2)
    plot(x0,y0,'+',x,y2);
    title("Spline1");
    
    subplot(1,3,3)
    plot(x0,y0,'+',x,y3);
    title("Spline2");
    
    
    

    3.二维插值
    若节点是二维,插值函数就是二元函数,即曲面。
    1)插值节点为网格节点
    已知m*n个节点:(xi,yj,zij)(x_i,y_j,z_{ij})求点(x,y)处的插值z。
    matlab中有一些计算二维插值的命令

    z=interp2(x0,y0,z0,x,y,'method');
    

    其中:x0,y0分别为m维和n维向量,表示节点。z0为n*m矩阵,表示节点值;x,y为一维数组,表示插值点,x与y应是方向不同的向量,即一个是行向量,另一个是列向量;z为矩阵,它的行数为y的维数,列数为x的维数,表示得到的插值;

    如果是三次样条插值,可以使用

    pp=csape({x0,y0},z0,conds,valconds);
    z=fnval(pp,{x,y});
    

    其中: x0,y0 分别为m 维和n维向量,z0 为m × n 维矩阵,z 为矩阵,它的行数为x的维
    数,列数为y 的维数,表示得到的插值,具体使用方法同一维插值。
    举例:在一丘陵地带测量高程,x 和y 方向每隔100米测一个点,得高程如2表,试插
    值一曲面,确定合适的模型,并由此找出最高点和该点的高程。

    在这里插入图片描述

    clear,clc
    x=100:100:500;
    y=100:100:400;
    z=[636    697    624    478   450  
       698    712    630    478   420
       680    674    598    412   400
       662    626    552    334   310];
    pp=csape({x,y},z')
    xi=100:10:500;yi=100:10:400;
    cz=fnval(pp,{xi,yi});
    [i,j]=find(cz==max(max(cz)))  %找最高点的地址
    x=xi(i),y=yi(j),zmax=cz(i,j)  %求最高点的坐标 
    
    

    运行结果

    i =
    
         8
    
    
    j =
    
         9
    
    
    x =
    
       170
    
    
    y =
    
       180
    
    
    zmax =
    
      720.6252
    

    2)插值节点为散乱节点
    已知n个节点(xi,yi,zi)(x_i,y_i,z_i),求点(x,y)处的插值z
    Matlab 中提供了插值函数griddata

    ZI=griddata(x,y,z,XI,YI);
    

    其中x,y,z 均为n 维向量,指明所给数据点的横坐标、纵坐标和竖坐标。向量XI、YI 是给定的网格点的横坐标和纵坐标,返回值ZI 为网格(XI,YI)处的函数值。XI与YI 应是方向不同的向量,即一个是行向量,另一个是列向量。

    绘制海底曲面的形状
    海底水深数据
    在这里插入图片描述

    在这里插入图片描述

    clc, clear
    x=[129,140,103.5,88,185.5,195,105,157.5,107.5,77,81,162,162,117.5];
    y=[7.5,141.5,23,147,22.5,137.5,85.5,-6.5,-81,3,56.5,-66.5,84,-33.5];
    z=-[4,8,6,8,6,8,8,9,9,8,8,9,4,9];
    xmm=minmax(x)  %求x的最小值和最大值
    ymm=minmax(y)  %求y的最小值和最大值
    xi=xmm(1):xmm(2);
    yi=ymm(1):ymm(2);
    zi1=griddata(x,y,z,xi,yi','cubic'); %立方插值
    zi2=griddata(x,y,z,xi,yi','nearest'); %最近点插值
    zi=zi1;  %立方插值和最近点插值的混合插值的初始值
    zi(isnan(zi1))=zi2(isnan(zi1));  %把立方插值中的不确定值换成最近点插值的结果
    subplot(1,2,1), plot(x,y,'*')
    subplot(1,2,2), mesh(xi,yi,zi)
    
    

    运行结果

    xmm =
    
        77   195
    
    
    ymm =
    
       -81   147
    
    展开全文
  • Matlab 插值

    2012-08-26 17:49:17
    MATLAB中的插值函数为interp1,其调用格式为: yi= interp1(x,y,xi,'method') 其中x,y为插值点,yi为在被插值点xi处的插值结果;x,y为向量, 'method'表示采用的插值方法,MATLAB提供的插值方法有几种: 'method'...
    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,1,0,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];
    a=13;
          y1=interp1(x,y,a,'spline')
    结果为:  27.8725
    若要得到一天24小时的温度曲线,则:
        xi=0:1/3600:24;
        yi=interp1(x,y,xi, 'spline');
        plot(x,y,'o' ,xi,yi)
    展开全文
  • matlab插值拟合

    2016-08-23 19:01:24
    matlab插值拟合
  • 四课时精通matlab插值

    2021-06-19 06:02:25
    精通matlab插值
  • matlab插值算法

    2018-02-06 11:24:23
    matlab插值算法汇总,其中包括一维,二维,曲面插值,并包括曲面法向量的计算。
  • matlab插值程序

    2010-08-29 16:14:47
    matlab 插值程序matlab 插值程序
  • 一、一元函数插值已知函数y=f(x)在区间[a,b]上的n+1个不同点的函数值为,若存在一个简单函数F(x), 使,称F(x)为f(x)在区间[a,b]上的插值函数,称(xi, yi)为插值节点。若F(x)为多项式,称为多项式插值(或代数插值) ;...

    一、一元函数插值

    已知函数y=f(x)在区间[a,b]上的n+1个不同点

    608d936eff8e2077396dba92c258988c.png的函数值为

    243d24cba510a5c8e3a3cf306503cd8f.png,若存在一个简单函数F(x), 使

    feb4a07ddf90e1cdff4ca4ba9b0b2289.png,称F(x)为f(x)在区间[a,b]上的插值函数,称(xi, yi)为插值节点。若F(x)为多项式,称为多项式插值(或代数插值) ;常用的代数插值方法有:拉格朗日插值,牛顿插值。

    n次代数插值:已知f(x)在n+1个点x0,x1,…,xn处的函数值为 y0,y1,…,yn , 求一个n次多项式函数Pn(x),使其满足: Pn(xi)=yi, (i=0,1,…,n). 若Pn(x)按下述方式构造,称为拉格朗日插值

    776f1ad2d486beb25a0453e5ebdc7b76.png

    其中Li(x) 为n次多项式:

    173f8f3c1417b3ab9a93700600fbd7b7.png

    称为拉格朗日插值基函数.

    特别地:

    (1)已知两个节点时,得线性插值多项式:

    5ee93a7efd037ed85185133455ec0270.png

    (2)已知三个节点时,得抛物插值多项式:

    12158c399182d9ca585a6244112b5652.png

    (3)已知n+1个节点时,可得n次拉格朗日插值多项式。

    关于代数插值:

    可以看出,当节点较多时,多项式的次数增高,插值函数出现振荡,精度变低。因此,为了保证精度,在节点较多时,一般采用分段插值,但这样在分段点光滑性较差。Matlab采用的多项式插值都是分段插值法。从图形还可以看出,对解析函数,插值精度高;对有奇点的函数,插值精度低。多项式插值对靠近插值区间中点的部分插值精度高,远离中点部分精度低。

    规则网点的插值

    y=interp1(x0,y0,x,'method'),y是对应x插值后获得的因变量,x0和y0为初始数据的自变量和因变量

    Method 的选项有 ‘nearest’, ‘next’, ‘previous’, ‘linear’,‘spline’,‘pchip’, 和 'cubic'. 缺省的机器设置为'linear'.

    插值效果:

    27a5ec68edaa981dd6bd8a6d19816dd2.png

    参考程序:

    xdata=0:pi/6:2*pi;

    ydata=sin(xdata);

    x=0:pi/20:2*pi;

    subplot(2,2,1)

    y=interp1(xdata,ydata,x,'nearest');

    plot(xdata,ydata,'p',x,y,'k-')

    title('nearest')

    subplot(2,2,2)

    y=interp1(xdata,ydata,x,'linear');

    plot(xdata,ydata,'p',x,y,'k-')

    title('linear')

    subplot(2,2,3)

    y=interp1(xdata,ydata,x,'cubic');

    plot(xdata,ydata,'p',x,y,'k-')

    title('cubic')

    subplot(2,2,4)

    y=interp1(xdata,ydata,x,'spline');

    plot(xdata,ydata,'p',x,y,'k-')

    title('spline')

    插值误差:

    dccbe9d3393e6e699ab91d334d62550e.png

    参考程序:

    xdata=0:pi/6:2*pi;

    ydata=sin(xdata);

    x=0:pi/20:2*pi;

    yy=sin(x);

    subplot(2,2,1)

    y=interp1(xdata,ydata,x,'nearest');

    plot(x,y-yy,'k-')

    title('nearest')

    subplot(2,2,2)

    y=interp1(xdata,ydata,x,'linear');

    plot(x,y-yy,'k-')

    title('linear')

    subplot(2,2,3)

    y=interp1(xdata,ydata,x,'curve');

    plot(x,y-yy,'k-')

    title('curve')

    subplot(2,2,4)

    y=interp1(xdata,ydata,x,'spline');

    plot(x,y-yy,'k-')

    title('spline')

    小tips:插值中使用较多的是分段线性插值和三次样条插值。

    三次样条插值是解决一维插值问题最常用的方法, Matlab中实现三次样条插值的方法有:

    yi=interp1(x,y,xi,’spline’)

    使用spline函数:

    yi=spline(x, y, xi) ,效果同 1

    pp=spline(x, y),获得三次样条插值的分段多项式pp,可使用ppval计算插值

    使用csape函数:pp=csape(x, y),可以添加参数选择边界条件

    例1:通过实验测得某函数的一组数据如下,试作出其插值函数的图形。

    解法一:

    x=[0,3,5,7,9,11,12,13,14,15];

    y=[0,1.2,1.65,2.1,2.15,2.0,1.85,1.65,1.55,1.25];

    xi=0:0.1:15;

    yi=interp1(x,y,xi, 'spline');

    yi1=interp1(x,y,xi, 'linear');

    yi2=interp1(x,y,xi, 'cubic');

    plot(x,y,'*',xi,yi,'r-',xi,yi1,'b-',xi,yi2,'g-')

    legend('节点','三次样条插值','线性插值','立方插值')

    解法二:

    x=[0,3,5,7,9,11,12,13,14,15];

    y=[0,1.2,1.65,2.1,2.15,2.0,1.85,1.65,1.55,1.25];

    xx=0: 0.1: 15;

    S=csape(x, y);

    %Sa=spline(x, y) ;

    P=S.coefs;

    %Pa=Sa.coefs;

    yy=ppval(S,xx);

    plot(x,y,'o',xx,yy,'r');

    关于pp形式:

    pp就是分段多项式,百语句形如:

    breaks = -5:-1;

    coefs = -22:-11;

    pp = ppmak(breaks,coefs)

    其中:breaks就是各度段的端点值,-5,-4,-3,-2,-1,有问4个区间

    coefs就是每段多项式的系数,答共有12个值,12/4=3,则有回4个多项式,每个多项式的最高次答数是3

    二、 二元函数插值

    网格节点数据插值

    函数:interp2

    格式:z=interp2(x0, y0, z0, x, y, ’method’)

    x0,y0,z0:插值节点坐标,要求x0, y0单调;

    x, y是被插值点的横坐标与纵坐标( x, y不能超过x0,y0的范围),z是被插值点的函数值。

    Method:(1)nearest 最邻近插值,(2)linear  双线性插值,(3)cubic双三次插值,默认为双线性插值。

    例2:要在一山区修建公路,首先测得一些点的高程(见附件,表中数据为坐标点的高程,单位:米,y轴正向为北)绘制该地地貌图。

    4800

    1350

    1370

    1390

    1400

    1410

    960

    940

    880

    800

    690

    570

    430

    290

    210

    150

    4400

    1370

    1390

    1410

    1430

    1440

    1140

    1110

    1050

    950

    820

    690

    540

    380

    300

    210

    4000

    1380

    1410

    1430

    1450

    1470

    1320

    1280

    1200

    1080

    940

    780

    620

    450

    370

    350

    3600

    1420

    1430

    1450

    1480

    1500

    1550

    1510

    1430

    1300

    1200

    980

    850

    750

    550

    500

    3200

    1430

    1450

    1460

    1500

    1550

    1600

    1550

    1600

    1600

    1600

    1550

    1500

    1500

    1550

    1500

    2800

    950

    1190

    1370

    1500

    1200

    1100

    1550

    1600

    1550

    1380

    1070

    900

    1050

    1150

    1200

    2400

    910

    1090

    1270

    1500

    1200

    1100

    1350

    1450

    1200

    1150

    1010

    880

    1000

    1050

    1100

    2000

    880

    1060

    1230

    1390

    1500

    1500

    1400

    900

    1100

    1060

    950

    870

    900

    930

    950

    1600

    830

    980

    1180

    1320

    1450

    1420

    1400

    1300

    700

    900

    850

    840

    380

    780

    750

    1200

    740

    880

    1080

    1130

    1250

    1280

    1230

    1040

    900

    500

    700

    780

    750

    650

    550

    800

    650

    760

    880

    970

    1020

    1050

    1200

    830

    800

    700

    300

    500

    550

    480

    350

    400

    510

    620

    730

    800

    850

    870

    850

    780

    720

    650

    500

    200

    300

    350

    320

    0

    370

    470

    550

    600

    670

    690

    670

    620

    580

    450

    400

    300

    100

    150

    250

    y/x

    0

    400

    800

    1200

    1600

    2000

    2400

    2800

    3200

    3600

    4000

    4400

    4800

    5200

    5600

    解:

    A = xlsread('新建 XLSX 工作表.xlsx');

    [xx,yy]=size(A);

    Z=A([1:xx-1],[2:yy]);

    x=0:400:5600;

    y=4800:-400:0;

    [X,Y]=meshgrid(x,y);

    surf(X,Y,Z); %离散图

    figure(2);

    xi=linspace(0, 5600, 80);

    yi=linspace(0, 4800, 80);

    [Xi,Yi]=meshgrid(xi, yi);

    %%-------------------------------

    Zi=interp2(X,Y,Z,Xi,Yi,'linear'); %二元插值 linear

    surf(Xi,Yi,Zi);

    %%-------------------------------

    figure(3)

    Zi=interp2(X,Y,Z,Xi,Yi,'spline'); %二元插值 spline

    surf(Xi,Yi,Zi);

    %%-------------------------------

    figure(4)

    t=0:100:1600;

    [c,h]= contourf(Xi,Yi,Zi,t); %等高线

    clabel(c, h)

    colormap cool

    colorbar

    散点数据插值函数

    已知n个插值节点(xi, yi, zi), (i=1,2,…,n), 求在点(x,y)处的插值z, matlab提供函数griddata。

    格式:cz=griddata(x,y,z,cx,cy,’method’)

    其中x,y,z 均为n 维向量,指明所给数据点(插值节点)的横坐标、纵坐标和竖坐标。cx, cy是给定被插值点的横坐标和纵坐标,cz为相应点的竖坐标。

    若cx,cy是向量,则给定以它们所确定网格点的横坐标和纵坐标,这时要求cx,cy一个为行向量一个为列向量。 编程时也可先用meshgrid将cx,cy定义成网格矩阵。

    例3:在某海域测得一些点(x,y)处的水深z(英尺)如下表,船的吃水深度为5英尺,在矩形区域(75,200)×(-50,150)里那些地方船要避免进入。

    x

    129

    140

    103.5

    88

    185.5

    195

    105

    157.5

    107.5

    77

    81

    162

    162

    117.5

    y

    7.5

    141.5

    23

    147

    22.5

    137.5

    85.5

    -6.5

    -81

    3

    56.5

    -66.5

    84

    -33.5

    z

    4

    8

    6

    8

    6

    8

    8

    9

    9

    8

    8

    9

    4

    9

    解:

    x=[129,140,103.5,88,185.5,195,105,157.5,107.5,77,81,162,162,117.5];

    y=[7.5,141.5,23,147,22.5,137.5,85.5,-6.5,-81,3,56.5,-66.5,84,-33.5];

    z=-[4,8,6,8,6,8,8,9,9,8,8,9,4,9];

    [x1,y1]=meshgrid(75:5:200,150:-5:-50);

    z1=griddata(x,y,z,x1,y1,'v4');

    surf(x1,y1,z1)

    figure(2)

    [c,h]=contourf(x1,y1,z1);

    clabel(c,h)

    三、 三元函数插值

    函数:interp3

    格式:v = interp3(x0, y0, z0, v0 , x, y, z ,’method’)

    x0,y0,z0,v0为插值数据,x,y,z为被插值的范围,v代表val

    虽然三元图像不能直观的画图观察,但是可以通过切割观察剖面,配合slice函数观察切片情况

    格式:slice(X,Y,Z,V,sx,sy,sz)

    X,Y,Z,V为数据,sx,sy,sz可决定切片形式和位置

    展开全文
  • matlab 插值(1)

    2010-04-23 15:41:57
    matlab 插值 matlab 插值matlab 插值matlab 插值matlab 插值
  • Matlab插值算法及代码
  • matlab 插值 代码解释

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,422
精华内容 1,768
关键字:

matlab插值

matlab 订阅