📄 bandpass3.m
字号:
clear all;
close all;
clf;
fsa=3;fpa=4;fpb=6;fsb=8;Apass=0.1;Astop=80;
fs=20; %kHz%
wa=pi*(fsa+fpa)/fs; wb=pi*(fsb+fpb)/fs;
%%%%%%% 所需带通滤波器的频率相应 D(w) %%%%%%%%%%%
w=[-pi,-wb,-wb,-wa,-wa,wa,wa,wb,wb,pi];
Dw=[0,0,1,1,0,0,1,1,0,0];
plot(w*fs/(2*pi),Dw); axis([0,10,-0.5,1.5]); title('要求设计的滤波器频率相应:D(f)');xlabel('f');ylabel('D(f)');
%%%%%%%理想带通滤波器单位冲激相应序列 d(k) %%%%%%%%%%
figure;
wa=pi*(fsa+fpa)/fs; wb=pi*(fsb+fpb)/fs;
Nu=101; k=-50:50;
d=dbp(wa,wb,Nu); %%%%%%%%%理想带通滤波器的单位冲激相应序列:d(k)
bar(k,d,0); title('理想带通滤波器的单位冲激相应序列:d(k)');xlabel('k');ylabel('d(k)');
%%%%%%计算Kaiser - w(n) %%%%%%%%%%%%%%%%%%%
figure;
Df=min(fpa-fsa,fsb-fpb); DF=Df/fs; %过渡带
s=1;
fa=((1+s)*fpa+(1-s)*fsa-s*Df)/2; wa=2*pi*fa/fs;
fb=((1+s)*fpb+(1-s)*fsb-s*Df)/2; wb=2*pi*fb/fs;
dpass=(10^(Apass/20)-1)/(10^(Apass/20)+1);
dstop=10^(-Astop/20);
d=min(dpass,dstop); A=-20*log10(d);
[alpha,N]=kparm(DF,A)
n=-(N-1)/2:(N-1)/2;
wn=kwind(alpha,N);
bar(n,wn,0);title('根据要求所得的Kaiser窗w(n):N=103');xlabel('n');ylabel('w(n)');
%%%%%% d(k) 用Kaiser窗截短 %%%%%%%%%%%
figure;
h=dbp(wa,wb,N).*kwind(alpha,N);
bar(n,h,0);title('用Kaiser窗截短并移位后的序列:h(n)=w(n)d(n-M)');xlabel('n');ylabel('h(n)');
%%%%%%%% h(k)=w(n)d(n-M) 的频率相应:H(w) %%%%%%%
w=-pi:pi/100:pi;
Hw=dtft(h,w);
plot(w*fs/(2*pi),20*log10(abs(Hw)/max(Hw))); axis([0,8,-120,0]);
title('h(k)对应的频率相应H(f)');xlabel('f');ylabel('H(f)');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -