MATLAB光滑数据的方法总结
对于数据的光滑,我开始理解的不透彻,直接用了一些MATLAB、Python的内置函数以后,没有理解其内在本质,仔细看了一些技术文章之后,了解了其基本原理,希望总结出来,可以以后用到
几种常用信号平滑去噪的方法
含普通噪声的数据的光滑
普通噪声即随机的噪声,是一些比较随机的波动。我们可以做的只是让这些波动变得平均。要去除背景还得用测量的结果减去背景才行。MATLAB内置了很多的函数,我们取其中的smoothdata
,filter
,movmean
函数,另外还可以手动来做卷积,来比较结果的异同。smoothdata
的处理含movmean
的选项,所以我们直接用smoothdata
函数即可。代码如下
x=linspace(0,10,100);
y=exp(-(x-5).^2)+ 0.25*rand(size(x));
y_0=exp(-(x-5).^2);
window=5;
b = (1/window)*ones(1,window);
a = 1;
y_smooth_gaussian=smoothdata(y,'gaussian',window);
y_smooth_flitter=filter(b,a,y);
y_smooth_cov=conv(y,b,'same');
y_smooth_movemean=smoothdata(y,'movmean',window);
figure(1)
plot(x,y,'DisplayName','noised da