%ch6prog1.m clear clc wp=0.3*pi;ws=0.5*pi;%滤波器通带及阻带截止频率 tr=ws-wp; %过渡带宽tr N=ceil(6.6*pi/tr)+1 %滤波器的点数(阶数)N n=[0:1:N-1]; wc=(ws+wp)/2; %hd(n)的截止频率wc m=n-(N-1)/2+eps; hd=sin(pi*m)./(pi*m)-sin(wc*m)./(pi*m);%理想低通滤波器hd(n) wn=hamming(N);%窗函数(哈明窗) h=hd.*wn; %加窗处理,设计FIR滤波器的单位脉冲响应h(n) [H,w]=freqz(h,[1],1000,'whole'); %h(n)的频率响应H(w) mag=abs(H); db=20*log10((mag+eps)/max(mag)); %h(n)的幅频特性(dB) delta_w=2*pi/1000; ap=-(min(db(1:1:wp/delta_w+1))) %技术指标验证ap,as as=-round(max(db(ws/delta_w+1:1:501))) figure(1) %绘图 subplot(221);stem(n,hd,'.');grid on;title('hd(n)'); subplot(222);stem(n,wn,'.');grid on;title('汉宁窗'); subplot(223);stem(n,h,'.');grid on;title('h(n)'); subplot(224);plot(w(1:501)/pi,db(1:501));grid on;title('H(w)');
时间: 2024-03-24 13:38:15 浏览: 90
FT-Prog-v3.12.38.643-FTD USB 工作模式设定及eprom读写
这段 MATLAB 代码实现了基于哈明窗的带阻滤波器设计。下面是代码的注释和解释:
```matlab
%ch6prog1.m
%基于哈明窗的带阻滤波器设计
clear;
clc;
% 滤波器通带和阻带截止频率
wp = 0.3 * pi;
ws = 0.5 * pi;
% 过渡带宽度
tr = ws - wp;
% 滤波器的点数(阶数)
N = ceil(6.6 * pi / tr) + 1;
% 确定理想低通滤波器hd(n)的截止频率wc
n = [0:1:N-1];
wc = (ws + wp) / 2;
% 理想低通滤波器hd(n)
m = n - (N - 1) / 2 + eps;
hd = sin(pi*m)./(pi*m) - sin(wc*m)./(pi*m);
% 加窗处理,设计FIR滤波器的单位脉冲响应h(n)
wn = hamming(N);
h = hd .* wn;
% h(n)的频率响应H(w)
[H, w] = freqz(h, [1], 1000, 'whole');
% h(n)的幅频特性(dB)
mag = abs(H);
db = 20 * log10((mag + eps) / max(mag));
% 技术指标验证ap,as
delta_w = 2 * pi / 1000;
ap = -(min(db(1:1:wp/delta_w+1)));
as = -round(max(db(ws/delta_w+1:1:501)));
% 绘图
figure(1)
subplot(221); stem(n, hd, '.'); grid on; title('hd(n)');
subplot(222); stem(n, wn, '.'); grid on; title('汉宁窗');
subplot(223); stem(n, h, '.'); grid on; title('h(n)');
subplot(224); plot(w(1:501)/pi, db(1:501)); grid on; title('H(w)');
```
代码实现了以下步骤:
1. 确定滤波器通带和阻带截止频率,以及过渡带宽度。
2. 确定滤波器点数(阶数)N,使用ceil函数将其向上取整。
3. 确定理想低通滤波器hd(n)的截止频率wc。
4. 计算理想低通滤波器hd(n)的单位脉冲响应。
5. 使用哈明窗对hd(n)进行加窗处理,得到FIR滤波器的单位脉冲响应h(n)。
6. 计算h(n)的频率响应H(w)和幅频特性db。
7. 验证技术指标ap和as。
8. 绘制hd(n)、汉宁窗、h(n)和H(w)的图形。
希望这些解释对您有所帮助!
阅读全文