📄 ex072600.m
字号:
% 第七章 例 7.26
% 用PM算法进行的阶梯滤波器设计
%
w1 = 0; w2 = 0.3*pi; delta1 = 0.01;
w3 = 0.4*pi; w4 = 0.7*pi; delta2 = 0.005;
w5 = 0.8*pi; w6 = pi; delta3 = 0.001;
deltaH = max([delta1,delta2,delta3]); deltaL = min([delta1,delta2,delta3]);
weights = [delta3/delta1 delta3/delta2 1]
delta_f = min((w3-w2)/(2*pi), (w5-w3)/(2*pi))
M = ceil((-20*log10(sqrt(delta1*delta2))-13)/(14.6*delta_f)+1)
f = [0 w2/pi w3/pi w4/pi w5/pi 1]
m = [1 1 0.5 0.5 0 0];
h = remez(M-1,f,m,weights);
[db,mag,pha,grd,w] = freqz_m(h,[1]);
delta_w = 2*pi/1000;
w1i=floor(w1/delta_w)+1; w2i = floor(w2/delta_w)+1;
w3i=floor(w3/delta_w)+1; w4i = floor(w4/delta_w)+1;
w5i=floor(w5/delta_w)+1; w6i = floor(w6/delta_w)+1;
Asd = -max(db(w5i:w6i))
% M=49时找到最优值
M = 49;
h = remez(M-1,f,m,weights);
[db,mag,pha,grd,w] = freqz_m(h,[1]);
Asd = -max(db(w5i:w6i))
[Hr,omega,P,L] = ampl_res(h);
%
% 画图
figure(1); subplot(1,1,1)
subplot(2,2,1); stem([0:1:M-1],h); title('实际脉冲响应')
axis([0,M-1,-0.1,0.6]); ylabel('h(n)');text(M,-0.1,'n')
set(gca,'XTickMode','manual','XTick',[0,M-1])
set(gca,'YTickMode','manual','YTick',[-0.1:0.1:0.6])
subplot(2,2,2);plot(w/pi,db);title('幅度响应(单位:dB)');
axis([0,1,-80,10]); xlabel(''); ylabel('分贝数')
set(gca,'XTickMode','manual','XTick',f)
set(gca,'YTickMode','manual','YTick',[-60,0]);
set(gca,'YTickLabelMode','manual','YTickLabels',['60';' 0']);grid
subplot(2,2,3);plot(omega/pi,Hr);title('振幅响应');
axis([0 1 -0.1 1.1]); xlabel('频率(单位:pi)'); ylabel('Hr(w)')
set(gca,'XTickMode','manual','XTick',f)
set(gca,'YTickMode','manual','YTick',[0,0.5,1]);grid
delta_w = 2*pi/1000; sp_edge = w5/delta_w+1;
subplot(2,2,4);
b1w = omega(w1i:w2i)/pi; b1e = (Hr(w1i:w2i)-m(1))*weights(1);
b2w = omega(w3i:w4i)/pi; b2e = (Hr(w3i:w4i)-m(3))*weights(2);
b3w = omega(w5i:w6i)/pi; b3e = (Hr(w5i:w6i)-m(5))*weights(3);
plot(b1w,b1e,b2w,b2e,b3w,b3e);
title('加权误差');
axis([0,1,-delta3,delta3]);
xlabel('频率(单位:pi)'); ylabel('Hr(w)')
set(gca,'XTickMode','manual','XTick',f)
set(gca,'YTickMode','manual','YTick',[-delta3,0,delta3]);
grid
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -