Matlab信号处理(平滑滤波)

您所在的位置:网站首页 iirnotch函数 Matlab信号处理(平滑滤波)

Matlab信号处理(平滑滤波)

#Matlab信号处理(平滑滤波)| 来源: 网络整理| 查看: 265

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