Matlab数字滤波器的设计(IIR与FIR)(内含Matlab代码)

您所在的位置:网站首页 matlab低通滤波器代码 Matlab数字滤波器的设计(IIR与FIR)(内含Matlab代码)

Matlab数字滤波器的设计(IIR与FIR)(内含Matlab代码)

2023-11-23 12:39| 来源: 网络整理| 查看: 265

Matlab数字滤波器的设计(IIR与FIR)(内含Matlab代码)

FIR滤波器的优缺点 优点:相位线性度好,处理速度快,没有反馈回路稳定性强于IIR。 缺点:FIR幅频特性精度较之于IIR低 IIR滤波器 优点:相同阶数下IIR滤波效果更好 缺点:相位非线性程度较高,矫正时需要双向滤波进行矫正,不易控制。 FIR滤波器最关键的在于窗函数:这里介绍 汉明窗: FIR——Hamming窗

较低的旁瓣幅度,尤其是第一旁瓣;旁瓣幅度要下降得快,以利于增加阻带衰减;主瓣宽度要窄,这样滤波器过渡带较窄。 N=40 泄露系数0.04%,相对旁瓣抑制-42.1dB,主瓣宽度0.0625 (归一化后的频率) 在这里插入图片描述 N越大,计算时间越长,群时延越长。取N=40(根据不同的情况,滤波器阶数可以取不同的值,这里我们对一段特定的音频信号进行滤波,因此取40) N越大,计算时间越长,群时延越长。取N=40

在这里插入图片描述 滤波结果展示: 在这里插入图片描述 蓝色为滤波前信号;红色为FIR滤波后的信号 利用IIR椭圆滤波器对音频信号进行滤波: 在这里插入图片描述 滤波结果展示:在这里插入图片描述 直接对歌曲进行IIR_ Eliptic(椭圆)滤波 FIR滤波(黄色),IIR滤波后(紫色) 对于不同的音频信号,对原始频谱进行分析后,只需要改动滤波器的设计参数,即可实现数字滤波。 下面请看代码:

[x,fs]=audioread('C:\Users\a\Desktop\大三上\精密仪器\讨论课题目\新闻(加噪声).wav'); n=length(x); y=fft(x,n); %做FFT变换 f=fs*(0:n/2-1)/n; subplot(2,1,1); plot(x); axis([0 1400000 -1.5 1.5]); title('原始新闻信号采样后的时域波形'); xlabel('时间轴') ylabel('幅值A') subplot(2,1,2); plot(f,abs(y(1:n/2))); axis([0 1000 0 5000]); title('原始新闻信号采样后的频谱图'); xlabel('频率Hz'); ylabel('频率幅值'); % n=0:N-1; % w=2*n*pi/N; FIRsignal=IIR_BANDPASSCheby; outsignal=filter(FIRsignal,x); % IIRsignal=IIR_BANDPASSEliptic; % outsignal2=filter(IIRsignal,outsignal); % set(gca,'fontsize',15,'tickdir','out') % axis([0 5.0E-4 -2 2]) % xlabel('Time');ylabel('Amplitude') % legend('FIR低通数字滤波器后的信号') m=fft(outsignal,n); f=48000*(0:n/2-1)/n; figure subplot(211); plot(outsignal); axis([0 1400000 -1.5 1.5]); title('新闻滤波信号时域波形'); xlabel('时间轴') ylabel('幅值A') subplot(212); plot(f,abs(m(1:n/2))) axis([200 2700 0 5000]); title('新闻滤波信号频谱图'); xlabel('频率Hz'); ylabel('频率幅值'); sound(1.5*outsignal,44100); % audiowrite('C:\Users\a\Desktop\精密仪器\讨论课题目\新闻(IIR滤波后).wav',outsignal2,44100); % sound(x,44100);

第一次发,欢迎大家指正交流,不喜勿喷!!!!在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3