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

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


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))
​​​​​​​
  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dfreedom.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值