Matlab插值与拟合

一、插值(二维、三维)

    插值就是在已知数据之间计算估计值的过程,是一种实用的数值方法,是函数逼近的重要方法。在信号处理和图形分析中,插值运算的应用较为广泛,MATLAB提供了多种插值函数,可以满足不同的需求。

二维

在matlab中自带的一维插值函数有:interp1,其函数定义式如下:

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

其中method代表插值方法,有:                  (缺省时默认为线性插值)

  1.nearest-----最邻近插值

  2.linear------线性插值

  3.spline-------三次样条插值

  4.cubic--------立方插值

栗子:

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;
y2 = interp1(x0,y0,x);                         %缺省为线性插值
y3 = interp1(x0,y0,x,'spline')                 %三次样条插值
subplot(3,1,1);
plot(x0,y0,'k+',x,y1,'r');
grid;
title('lagrange');
subplot(3,1,2);
plot(x0,y0,'k+',x,y2,'r');
grid;
title('piecewise linear');                  
subplot(3,1,3);
plot(x0,y0,' k+',x,y3,'r');
grid;
title( 'spline');

三维

在matlab中自带的一维插值函数有:griddata,其函数定义式如下:

zi=griddata(x,y,z,xi,yi,'method') %x,y和xi,yi通常为向量

插值的方法有:                                                    (缺省时默认为双线性插值)

  1.nearest-----最邻近插值

  2.linear------双线性插值

  3.spline-------双三次样条插值

  4.cubic--------双立方插值

栗子:

clear;clc
x=[129 140 103.5 88 185.5 195 105.5 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];
[xi,yi]=meshgrid(75:0.5:200,-70:0.5:150);
zi=griddata(x,y,z,xi,yi,'cubic');                   %散乱点插值
figure(1);
meshz(xi,yi,zi);
xlabel('X'),ylabel('Y'),zlabel('Z');

二、拟合

    拟合:拟合是指已知某函数的若干离散函数值,通过调整该函数中若干待定系数,使得该函数与已知点集的方差最小。

①多项式拟合

matlab自带的多项式拟合函数:polyfit函数,其用法如下:

[a,S] = polyfit(x,y,n);   

    x、y是被拟合数据的自变量和因变量  n为拟合多项式的次数  a为拟合多项式系数构成的向量
S为分析拟合效果所需的指标(可省略)

栗子:

    假设我们现在有一组二维散点,如下所示:

 多次尝试之后,n取值为9的时候拟合效果最好:  (n<=9)

代码如下:

clc;clear
x=1:12;                                
y=[5,8,9,15,25,29,31,30,22,25,27,24];
a=polyfit(x,y,9);
xp=1:0.1:12;
yp=polyval(a,xp);
plot(x,y,'.k',xp,yp);

②指定函数拟合

syms t;
x=[0;0.4;1.2;2;2.8;3.6;4.4;5.2;6;7.2;8;9.2;10.4;11.6;12.4;13.6;14.4;15];
y=[1;0.85;0.29;-0.27;-0.53;-0.4;-0.12;0.17;0.28;0.15;-0.03;-0.15;-0.071;0.059;0.09;0.032;-0.015;-0.02];%指定函数形式为f(t)=acos(kt)e^(wt),进行拟合
f=fittype('a*cos(k*t)*exp(w*t)','independent','t','coefficients',{'a','k','w'});
cfun=fit(x,y,f)     %显示拟合函数
xi=0:.1:20;
yi=cfun(xi);
plot(x,y,'r*',xi,yi,'b-');

其效果如下所示:

结果显示的最佳参数:

    matlab中还有许多自带的插值拟合函数,除本文几个较为基础的函数以外就不多提及了。读者感兴趣的话可以去挖掘。

  • 7
    点赞
  • 82
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Matlab中的插值拟合都是数据处理中常用的方法,下面分别介绍一下插值拟合的相关函数和用法。 一、插值 插值即在已知数据点之间求出新的数据点,常用于数据的平滑处理和曲线的绘制。Matlab中常用的插值函数有interp1和interp2。 1. interp1函数 interp1函数用于一维插值,可以对一维数组进行线性插值、多项式插值、分段线性插值等。函数格式为: YI = interp1(X,Y,XI,method) 其中X和Y表示已知数据点的横坐标和纵坐标,XI表示要插值的点的横坐标,method表示插值方法,可以取值为'linear'、'nearest'、'spline'和'pchip'等。 下面是一个简单的线性插值的例子: x = [1,2,3,4,5]; y = [3,6,2,7,1]; xi = 1:0.1:5; yi = interp1(x,y,xi,'linear'); plot(x,y,'o',xi,yi); 2. interp2函数 interp2函数用于二维插值,可以对二维数组进行线性插值、样条插值等。函数格式为: ZI = interp2(X,Y,Z,XI,YI,method) 其中X、Y和Z表示已知数据点的横坐标、纵坐标和数值,XI和YI表示要插值的点的横坐标和纵坐标,method表示插值方法,可以取值为'linear'、'cubic'和'spline'等。 下面是一个简单的二维插值的例子: [X,Y] = meshgrid(-3:0.5:3,-3:0.5:3); Z = peaks(X,Y); [XI,YI] = meshgrid(-3:0.1:3,-3:0.1:3); ZI = interp2(X,Y,Z,XI,YI,'spline'); mesh(XI,YI,ZI); 二、拟合 拟合即对一组数据进行曲线拟合,得到一个函数,使得这个函数尽可能地逼近这组数据。Matlab中常用的拟合函数有polyfit和fit。 1. polyfit函数 polyfit函数用于多项式拟合,可以对一维数组进行拟合。函数格式为: p = polyfit(X,Y,n) 其中X和Y表示已知数据点的横坐标和纵坐标,n表示多项式的阶数,p为多项式的系数。 下面是一个简单的多项式拟合的例子: x = 0:0.1:2*pi; y = sin(x) + randn(size(x))*0.1; p = polyfit(x,y,5); y_fit = polyval(p,x); plot(x,y,'o',x,y_fit); 2. fit函数 fit函数用于非线性拟合,可以对一维或二维数据进行拟合。函数格式为: f = fit(X,Y,fittype,options) 其中X和Y表示已知数据点的横坐标和纵坐标,fittype表示拟合类型,可以取值为'poly1'、'poly2'、'exp1'、'exp2'、'sin1'、'sin2'等,options表示拟合选项,常用的选项有'Lower'、'Upper'、'StartPoint'等。 下面是一个简单的非线性拟合的例子: x = 0:0.1:2*pi; y = sin(x) + randn(size(x))*0.1; f = fit(x',y','sin1'); plot(f,x,y); 以上就是Matlab插值拟合的相关函数和用法。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值