Matlab信号处理(平滑滤波) |
您所在的位置:网站首页 › iirnotch函数 › Matlab信号处理(平滑滤波) |
Matlab信号处理(平滑滤波)
1.使用matlab的内有函数进行滤波
移动平均滤波
原理:滑动平均法(moving average)也叫做移动平均法、平均法、移动平均值滤波法等等,是一种时间域思想上的信号光滑方法。算法思路为,将该点附近的采样点做算数平均,作为这个点光滑后的值。 上图是将窗体设置为3时的滑动平均流程(窗体设置最好为奇数) 算法实现: y(n)=1/3∗(x(n−1)+x(n)+x(n+1))matlab实现: clear; close all; clc; x = linspace(-pi,pi,100); y = sin(2*pi*x); n = randn(size(x)); t = y+n; y1 = movmean(t,8); subplot(211); plot(x,t); title('带噪声输入信号'); subplot(212); plot(x,y1); title('平滑滤波后的信号');结果展示: 将窗体从8设置为3时可以观看效果: 利用卷积函数进行滤波利用卷积原理就是对输入噪声波形和【1/N_Window … 1/N_Window】(N_Window个1/N_Window)进行卷积 原理和移动平均滤波相同,也是求一个区域的平均值!!!可知与上述用平滑函数的结果相同!只是头部信号 和尾部信号不同,是因为movmean()函数在处理边缘时,采用减小窗口的方式,而conv()相当于在两端补零!! %% clear; close all; clc; N_Window = 5; %设置窗体数 x = linspace(-pi,pi,100); y = cos(2*pi*x); n = randn(size(x)); t = y+n; %杂波信号 z = 1/N_Window*ones(1,N_Window); y1 = conv(t,z,"same"); y2 = movmean(t,5); subplot(211); plot(x,t); title('带噪声输入信号'); subplot(212); plot(x,y1,x,y2,'r'); title('平滑滤波后的信号'); 2.0Savitzky-Golay法,又叫做平滑滤波器,最著名的就是5点3次滤波器。这是一种基于时间域上的多项式拟合,来消除噪声的方法。 将数据进行多项式拟合,进行数据的平滑滤波;(利用matlab自带的smoothdata(A,‘sgolay’)函数就可以实现Savitzky-Golay法滤波。但是,该函数只支持N点2次的滤波) %% clear clc close all N_window = 9;%窗口长度(最好为奇数) t = 0:0.1:10; A = cos(2*pi*0.5*t)+0.4*rand(size(t)); %matlab自带的n点2次插值 B1 = smoothdata(A,'sgolay' ,N_window); figure(1) plot(t,A,t,B1) %%拟合原理进行滤波 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |