|
本帖最后由 VibInfo 于 2016-10-17 15:18 编辑
原帖由 dstsc 于 2007-7-8 12:13 发表
我借鉴了前辈的一段程序!是把音频信号加噪声然后用低通滤波器滤波!然后比较!
用的是Butterworth滤波器和blackman滤波器~但两个的频谱图错了~
我不知道是参数问题还是什么问题~大家指教下啊!
是不是要把音频的一些参数弄出来然后计算什么的啊!
我是一菜鸟~被老师一问就什么都不懂了~大家教教我啊!
blackman滤波器设计改为:
%blackman滤波器设计
Window=blackman(55); %长度为35的blackman窗Window
b=fir1(54,0.1,Window);%产生低通blackman滤波器
%freqz(b,1,512);
[H,w]=freqz(b,1,512);
plot(w/pi,abs(H)); grid;
title('blackman滤波器的频率响应');
xlabel('归一化频率');
ylabel('幅值');
给出的频率是归一化频率,Y轴不是声强/db,而是线性幅值。Butterworth滤波器设计改为
%Butterworth滤波器设计
FS=1;
T=1/FS;
%通带、阻带截止频率
Fl=0.08;Fh=0.15;
%频率预畸
wp=(Fl/FS)*2*pi; %临界频率采用角频率表示
ws=(Fh/FS)*2*pi; %临界频率采用角频率表示
%为双线性z变换进行频率变换
OmegaP=2*FS*tan(wp/2);
OmegaS=2*FS*tan(ws/2);
[k,Wn]=buttord(OmegaP,OmegaS,1,60,'s');
Wn=Wn/pi; %转换成数字滤波器的Wn
[b,a]=butter(k,Wn);
%freqs(b,a) %设计模拟的
%[bz,az]=bilinear(b,a,T); %映射为数字的
% 绘制结果
[H,f]=freqz(b,a,1024,'whole',FS);
%figure(8);
plot(f,abs(H)); grid;
title('Butterworth滤波器的频率响应');
xlabel('频率(Hz)');
ylabel('幅值');
figure(2);
[db, mag, pha, grd,w]=freqz_m(b,a);
plot(w*FS/2/pi,db); grid;
title('Butterworth滤波器的频率响应');
xlabel('频率(Hz)');
ylabel('幅值(dB)');
响应曲线如下 |
-
blackman滤波器线性响应曲线
-
Butterworth滤波器线性响应曲线
-
Butterworth滤波器对数响应曲线
评分
-
1
查看全部评分
-
|