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

📄 hc737.m

📁 这是数字信号处理——matlab释义与实现一书的源代码
💻 M
字号:
%《数字信号处理教程——MATLAB释义与实现》第七章例7.3.7程序hc737
% 用布莱克曼窗函数设计带通滤波器
% 电子工业出版社出版  陈怀琛编著 2004年9月
%
ws1 = 0.2*pi; wp1 = 0.35*pi;        % 给定指标
wp2 = 0.65*pi; ws2 = 0.8*pi;
As = 60;
deltaw= min((wp1-ws1),(ws2-wp2));   % 求两个过渡带中的小者
N0 = ceil(11*pi/deltaw);             % 按表7.3.2中数据求滤波器应有长度N0
N=N0+mod(N0+1,2);		% 为了实现第一类偶对称滤波器,应使其长度N为奇数
wdbla = (blackman(N))';     % 求窗函数
wc1 = (ws1+wp1)/2; wc2 = (wp2+ws2)/2;   % 截止频率取通带阻带边界频率的平均值
hd = ideallp(wc2,N) - ideallp(wc1,N); % 按图7.3.6求带通滤波器理想脉冲响应
h = hd .* wdbla;                    % 求实际滤波器脉冲响应,即其系数向量
[db,mag,pha,grd,w] = myfreqz(h,[1]);    % 检验设计出的滤波器的频率响应
dw = 2*pi/1000;
Rp = -min(db(wp1/dw+1:wp2/dw))      % 实际的通带波动
As = -round(max(db(ws2/dw+1:501)))  % 最小阻带衰减
% 画图
n=[0:N-1];
subplot(2,2,1); stem(n,hd,'.'); title('理想脉冲响应')
axis([0 N-1 -0.4 0.5]);  ylabel('hd(n)');text(N+1,-0.4,'n')
subplot(2,2,2); stem(n,wdbla,'.');title('布莱克曼窗')
axis([0 N-1 0 1.1]); ylabel('w(n)');text(N+1,0,'n')
subplot(2,2,3); stem(n,h,'.');title('实际脉冲响应')
axis([0 N-1 -0.4 0.5]); xlabel('n'); ylabel('h(n)')
subplot(2,2,4);plot(w/pi,db);axis([0 1 -150 10]); 
title('幅度响应(单位:dB)');grid;
xlabel('频率(单位: pi)'); ylabel('分贝数')
set(gcf,'color','w');                % 置图形背景色为白

⌨️ 快捷键说明

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