ms24_10.m

来自「《数字信号处理实验(MATLAB版)》这」· M 代码 · 共 36 行

M
36
字号
%FIR带阻滤波器

N=75;As=60;             %输入设计指标
wp1=0.2*pi;wp2=0.8*pi;  
ws1=0.3*pi;ws2=0.7*pi;
beta=0.1102*(As-8.7)    %计算β值
windows=kaiser(N,beta); %使用凯塞窗
wc1=(ws1+wp1)/2/pi; %截止频率取归一化通阻带频率的平均值        
wc2=(ws2+wp2)/2/pi;
b=fir1(N-1,[wc1,wc2],'stop',windows);  %用fir1子函数求系统函数系数
[db,mag,pha,grd,w]=freqz_m(b,1);       %求解频率特性
n=0:N-1;dw=2*pi/1000;   %dw为频率分辨率,将0~2π分为1000份
wp0=[1:wp1/dw+1,wp2/dw+1:501];         %建立通带频率样点数组
Rp=-(min(db(wp0)))                     %检验通带波动
As0=-round(max(db(ws1/dw+1:ws2/dw+1))) %检验最小阻带衰减
%
subplot(2,2,1),stem(n,b,'filled','k');
axis([0,N,1.1*min(b),1.1*max(b)]);title('实际脉冲响应');
xlabel('n');ylabel('h(n)');
subplot(2,2,2),stem(n,windows,'filled','k');
axis([0,N,0,1.1]);title('窗函数特性');
xlabel('n');ylabel('wd(n)');
subplot(2,2,3),plot(w/pi,db,'k');
axis([0,1,-150,10]);title('幅度频率响应');
xlabel('频率(单位:\pi)');ylabel('H(e^{j\omega})');
set(gca,'XTickMode','manual','XTick',[0,wp1/pi,ws1/pi,ws2/pi,wp2/pi,1]);
set(gca,'YTickMode','manual','YTick',[-100,-60,-20,-3,0]);grid
subplot(2,2,4),plot(w/pi,pha,'k');
axis([0,1,-4,4]);
title('相频响应');
xlabel('频率(单位:\pi)');ylabel('\phi(\omega)');
set(gca,'XTickMode','manual','XTick',[0,wp1/pi,ws1/pi,ws2/pi,wp2/pi,1]);
set(gca,'YTickMode','manual','YTick',[-pi,0,pi]);grid


⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?