impedance 发表于 2016-5-25 16:06

拟合与插值以及插值重采样算法

  从几何意义上将,拟合是给定了空间中的一些点,找到一个已知形式未知参数的连续曲面来最大限度地逼近这些点;而插值是找到一个(或几个分片光滑的)连续曲面来穿过这些点。

  1、拟合
  下面以非线性曲线拟合函数为例进行讲解:
  matlab中有个lsqcurvefit函数,其运用格式为
  A= lsqcurvefit( func,,X,Y)
  其中func是进行拟合的函数的模型,[]里面是模型函数里面的估计值,X,Y分别是进行拟合的自变量和因变量,返回的A是拟合出来的模型参数的值即的拟合值。

  例子如下:
  将数据点拟合成一个正弦曲线,运行结果如下:


  拟合得到的结果与估计值有很大的关系,估计值越接近真实值,拟合曲线越精确,因此需要在拟合前采取一切手段对参数进行估计。

  代码如下:
  clc,clear

  load dk.txt

  dk=reshape (dk',1,[]);

  N=length(dk);

  b=1525e-9:5e-15:1530e-9;

  k=2*pi./b;

  func_sin = @(a,t) a(1)*sin(a(4)*t+a(2))+a(3);

  A= lsqcurvefit( func_sin,,k(1:N),dk(1:N))

  figure(1)

  plot(k(1:1000), dk(1:1000), 'r*')

  hold on

  plot(k(1:1000), func_sin(A,k(1:1000)))

  2、插值
  本文介绍一种插值重采样的例子,非等时间间隔采样得到的信号进行FFT变换会出现频谱展宽的现象,需要用插值的办法对数据进行等间隔重采样,这样就可以消除频谱展宽的现象,这样就会产生频率分辨率下降的情况。


  原始信号为:y=cos(2*pi*5*t)+0.8*cos(2*pi*10*t),首先对它进行非等间隔采样然后进行傅里叶变换,得到结果如图1:

  从结果可以看出,由于非等间隔采样导致频率分辨率下降,无法从频谱图上准确得到信号的频率成分。将信号进行等间隔的插值重采样,然后再进行FFT变换,得到的结果如下图:


  从上图可以明显看到频率分辨率得到了很大的改善。


  源代码如下:

  dt=0.01;%采样间隔

  fs=1/dt;

  N=512;%采样点数

  t=0:dt:(512-1)*dt;%等间隔时间

  n=0:1:(N-1);

  f=fs*n/N;

  m=length(t);

  tt=t+dt*10*rand(1,m);%非等间隔变化的时间

  y=cos(2*pi*5*tt)+0.8*cos(2*pi*10*tt);

  yy=fft(y); Ayy=abs(yy);

  Ayyy=Ayy*2/N;

  figure(1)

  plot(f(1:N/2),Ayyy(1:N/2))

  w=interp1(tt,y,t,'spline');%三次样条插值重采样

  yw=abs(fft(w));

  Ayw=yw*2/N;

  figure(2)

  plot(f(1:N/2),Ayw(1:N/2))



转自:http://blog.sina.com.cn/s/blog_82005f210102waxz.html

impulse 发表于 2016-5-25 18:19

严格来说,插值重采样是需要进行低通滤波抗混的。

zghitboy 发表于 2016-5-26 08:35

impulse 发表于 2016-5-25 18:19
严格来说,插值重采样是需要进行低通滤波抗混的。

有例子吗分享一下
页: [1]
查看完整版本: 拟合与插值以及插值重采样算法