windyc123
2018-05-29, 23:51
要求用双线性变换法设计一个butterworth数字高通滤波器,Wp=0.11*pi,Ws=0.0925*pi,Ap=1,As=50,我用这个代码:
Wp=0.11*pi; Ws=0.0925*pi; Ap=1; As=20; T=2;Fs=1/T;
wp=2*tan(Wp/2)/T;ws=2*tan(Ws/2)/T;wp1=1/wp;ws1=1/ws; [N,wc]=buttord(wp1,ws1,Ap,As,'s'); [num,den]=butter(N,wc,'s'); [numa,dena]=lp2hp(num,den,1);
[numd,dend]=bilinear(numa,dena,Fs); w=linspace(0,pi,1024); h=freqz(numd,dend,w);
plot(w/pi,20*log10(abs(h)));然后会出现这个问题:矩阵接近奇异值,或者缩放错误。
请问这是什么原因,该如何解决,或者可以用别的什么代码实现吗?
多谢!
Wp=0.11*pi; Ws=0.0925*pi; Ap=1; As=20; T=2;Fs=1/T;
wp=2*tan(Wp/2)/T;ws=2*tan(Ws/2)/T;wp1=1/wp;ws1=1/ws; [N,wc]=buttord(wp1,ws1,Ap,As,'s'); [num,den]=butter(N,wc,'s'); [numa,dena]=lp2hp(num,den,1);
[numd,dend]=bilinear(numa,dena,Fs); w=linspace(0,pi,1024); h=freqz(numd,dend,w);
plot(w/pi,20*log10(abs(h)));然后会出现这个问题:矩阵接近奇异值,或者缩放错误。
请问这是什么原因,该如何解决,或者可以用别的什么代码实现吗?
多谢!