1 简介
FIR数字滤波器是数字滤波器系统中常见的滤波器,本文提出FIR数字滤波器的设计方案,并基于Ma tlab实现滤波仿真.通过使用Matlab信号处理工具箱提供的函数,选择适当的窗函数编写程序,其中窗函数按照实际信号的处理需求,参数折中选择.实验获得了比较理想的滤波器特性,可以实现较好的滤波作用.而且在实际应用中只需按需求修改滤波器参数,并结合程序的相应改动,即可实现不同功能的滤波器.
2 完整代码
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%设定初始参数%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%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)xlabel('频率/Hz');ylabel('功率谱/dB');title('平均功率谱图');grid on %做功率谱图df1=fs/L1;p1=(sum(px1(1:L1/2-1))+sum(px1(1:L1/2)))/2.*df1;pf1=(sum(px1(1:L1/2-1).*[1:L1/2-1].*df1)+sum(px1(1:L1/2).*[1:L1/2].*df1))/2*df1;MPF1=pf1/p1 ; %求平均功率频率N1=1;pp1=0;while abs(pp1-p1/2)>(px1(N1)+px1(N1+1))/2*df1pp1=pp1+(px1(N1)+px1(N1+1))/2*df1;N1=N1+1;endn_1=(N1+N1+1)/2;MF1=df1*n_1; %求中值频率MF=MF1MPF=MPF1iemg=iemg1rms=rms1
3 仿真结果



4 参考文献
[1]李嘉慧. 基于MATLAB的FIR低通滤波器设计[J]. 智富时代, 2016(S2):1.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。
本文介绍了如何使用Matlab设计FIR数字滤波器,包括巴特沃斯低通滤波器的设计过程,从信号处理开始到时域和频域特征值的计算。通过实例展示了滤波器设计的步骤,并提供了完整的代码。适用于信号处理初学者和Matlab使用者。
1541

被折叠的 条评论
为什么被折叠?



