|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
从几何意义上将,拟合是给定了空间中的一些点,找到一个已知形式未知参数的连续曲面来最大限度地逼近这些点;而插值是找到一个(或几个分片光滑的)连续曲面来穿过这些点。
1、拟合
下面以非线性曲线拟合函数为例进行讲解:
matlab中有个lsqcurvefit函数,其运用格式为
A= lsqcurvefit( func,[a1,a2,a3........],X,Y)
其中func是进行拟合的函数的模型,[]里面是模型函数里面的估计值,X,Y分别是进行拟合的自变量和因变量,返回的A是拟合出来的模型参数的值即[a1,a2,a3........]的拟合值。
例子如下:
将数据点拟合成一个正弦曲线,运行结果如下:
拟合得到的结果与估计值有很大的关系,估计值越接近真实值,拟合曲线越精确,因此需要在拟合前采取一切手段对参数进行估计。
代码如下:
- 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,[0.025 0 0.035 16],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
|
|