⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bandpass3.m

📁 FIR带通滤波器的设计程序
💻 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 + -