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);
第一次发,欢迎大家指正交流,不喜勿喷!!!!![在这里插入图片描述](https://img-blog.csdnimg.cn/20200325195503219.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQzOTQ0NTM5,size_16,color_FFFFFF,t_70#pic_center)
|