📄 shiyan3.m
字号:
%-----实验四
%butterworth模拟滤波器设计
%技术指标fp=2khz fs=10 khz Ap<=0.5dB As>=50 dB
Ap=0.5;
As=50;
Wp=2*pi*2000;
Ws=2*pi*10000;
%采样间隔
t=0.02*pi;
Fs=2*pi/t;
[n,wc]=buttord(Wp,Ws,Ap,As,'s');
[numa,dena]=butter(n,wc,'s');
fprintf('butterworth模拟滤波器设计成功!')
fprintf('order of filter=%.Of\n',n);
disp('Numerator polyminial');
fprintf('%.4e\n',numa);
disp('Denominator polynamial');
fprintf('%.4e\n',dena);
%模拟滤波器设计成功,下面为脉冲响应不变法设计数字波器
[numd,dend]=impinvar(numa,dena,44100);
%双线性变换法设计
[numd2,dend2]=bilinear(numa,dena,44100);
%数字滤波器的幅频响应曲线
%输入的序列
x=[-4,-2,0,-4,-6,-4,-2,-4,-6,-6,-4,-4,-6,-6,-2,6,12,8,0,-16,-38,-60,-84,-90,-66,-32,-4,-2,-4,8,12,12,10,6,6,6,4,0,0,0,0,0,-2,-4,0,0,0,-2,-2,0,0,-2,-2,-2,-2,0]
w2=0:55
subplot(4,1,1);
stem(w2,x);
xlabel('k');
title('原来序列');
h=freqz(numd,dend,w2);%频率响应
h2=freqz(numd2,dend2,w2);%频率响应
f=ifft(h);
f2=ifft(h2);
shum=abs(conv(x,f))
shum2=abs(conv(x,f2))
w2=0:110
subplot(4,1,2);
stem(w2,shum);
xlabel('k');
title('脉冲响应不变法的x[k]的响应');
subplot(4,1,3);
stem(w2,shum2);
xlabel('k');
title('双线性变换法的x[k]的响应')
subplot(4,1,4);
plot(w2,shum-shum2);
xlabel('k');
title('误差');
grid;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -