【肌电信号】基于matlab低通滤波肌电信号处理【含Matlab源码 964期】

一、简介

滤波器的用途:滤波器主要用来滤除信号中的无用频率成分,让符合频率要求的信号通过,抑制不需要的信号。
滤波器的分类:低通滤波器(LPF)、高通滤波器(HPF)、带通滤波器(BPF)、带阻滤波器(BEF)。下边介绍的滤波器均为无源的。
1 无源低通滤波器
允许信号中较低频率成分通过滤波器时,这种滤波器叫做低通滤波器。
【肌电信号】基于matlab低通滤波肌电信号处理【含Matlab源码 964期】_第1张图片
2 二阶低通滤波
下图为二阶低通滤波器电路和具体bode图,可以发现其下降部分相较于一阶低通滤波更加陡峭。
【肌电信号】基于matlab低通滤波肌电信号处理【含Matlab源码 964期】_第2张图片
3 RL电感低通滤波电路
RL电感低通滤波电路和RC低通滤波电路的功能基本一致,通低频,阻高频,此外还能实现积分电路。

二、源代码

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%设定初始参数%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
fs=2048;                          %采样频率
N=512;                            %采样点数
n=0:N-1;
t=n/fs;                           %时间
f1=100;
f2=300;                           %低频
f3=800;                           %高频
s=cos(2*pi*f1*t)+cos(2*pi*f2*t)+cos(2*pi*f3*t);%假定信号
subplot(121);plot(t,s);
title('输入信号');xlabel('t/s');ylabel('幅度');%未滤波时  时域波形
sfft=fft(s);  %傅里叶变换
subplot(122);  
plot((1:length(sfft)/2)*fs/length(sfft),2*abs(sfft(1:length(sfft)/2))/length(sfft));  
title('信号频谱');xlabel('频率/Hz');ylabel('幅度');  %未滤波时  频域波形
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%设计巴特沃斯低通滤波器%%%%%%%%%%%%%%%%%%%%%%%%
Wp=900/fs;Ws=1000/fs;                     
[n,Wn]=buttord(Wp,Ws,1,50);                         %阻带衰减大于50db,通带纹波小于1db
                                                    %估算得到Butterworth低通滤波器的最小阶数N和3dB截止频率Wn
[a,b]=butter(n,Wn);  
[h,f]=freqz(a,b,'whole',fs);                        %求数字低通滤波器的频率响应  
f=(0:length(f)-1)*fs/length(f);                     %进行对应的频率转换  
figure(2);  
plot(f(1:length(f)/2),abs(h(1:length(f)/2)));       %绘制巴特沃斯幅频响应图  
title('巴特沃斯低通滤波器');xlabel('频率/Hz');ylabel('幅度');  
grid;  
sF=filter(a,b,s);                                   %叠加函数s经过低通滤波器以后的新函数  
figure(3);  
subplot(121);  
plot(t,sF);                                         %绘制叠加函数s经过低通后时域图形  
title('输出信号');xlabel('t/s');ylabel('幅度');  
SF=fft(sF);  
subplot(122);  
plot((1:length(SF)/2)*fs/length(SF),2*abs(SF(1:length(SF)/2))/length(SF));  
title('低通滤波后频谱');xlabel('频率/Hz');ylabel('幅度');
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%时域特征值计算%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
iemg1=sum(abs(sF))/length(sF);
rms1=sqrt(sum(sF.^2)/length(sF));
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%频域特征值计算%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
L1=length(sF);
cx1=xcorr(sF,'unbiased');
cxk1=fft(cx1,L1);
px1=abs(cxk1);                                                 %求功率谱密度
pxx1=10*log10(px1);
figure(4)
f1=(0:L1-1)*fs/L1;
plot(f1(1:L1/2),pxx1(1:L1/2))
figure(4)

三、运行结果

【肌电信号】基于matlab低通滤波肌电信号处理【含Matlab源码 964期】_第3张图片
【肌电信号】基于matlab低通滤波肌电信号处理【含Matlab源码 964期】_第4张图片
【肌电信号】基于matlab低通滤波肌电信号处理【含Matlab源码 964期】_第5张图片
【肌电信号】基于matlab低通滤波肌电信号处理【含Matlab源码 964期】_第6张图片
【肌电信号】基于matlab低通滤波肌电信号处理【含Matlab源码 964期】_第7张图片

四、备注

版本:2014a

你可能感兴趣的:(matlab,信号处理)