我是靠谱客的博主 刻苦飞机,最近开发中收集的这篇文章主要介绍Matlab数字滤波器的设计(IIR与FIR)(内含Matlab代码)Matlab数字滤波器的设计(IIR与FIR)(内含Matlab代码),觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
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:UsersaDesktop大三上精密仪器讨论课题目新闻(加噪声).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:UsersaDesktop精密仪器讨论课题目新闻(IIR滤波后).wav',outsignal2,44100);
% sound(x,44100);
第一次发,欢迎大家指正交流,不喜勿喷!!!!
最后
以上就是刻苦飞机为你收集整理的Matlab数字滤波器的设计(IIR与FIR)(内含Matlab代码)Matlab数字滤波器的设计(IIR与FIR)(内含Matlab代码)的全部内容,希望文章能够帮你解决Matlab数字滤波器的设计(IIR与FIR)(内含Matlab代码)Matlab数字滤波器的设计(IIR与FIR)(内含Matlab代码)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复