程序为:
%通过模拟低通原型滤波器进行数字带通设计程序:
fp=480 %模拟低通通带上限频率
fs=520 %模拟低通阻带下限频率
wp=2*pi*fp %模拟低通通带上限角频率
ws=2*pi*fs %模拟低通阻带下限角频率
rp=3 %通带波动
rs=20 %阻带衰减
%巴特沃斯模拟低通原型滤波器设计
[n,wn]=buttord(wp,ws,rp,rs,'s')
[z,p,k]=buttap(n); %模拟低通原型零、极点系数
[b1,a1]=zp2tf(z,p,k) %零、极点系数转换为传递函数
%巴特沃斯模拟低通原型滤波器频率响应
[h1,w1]=freqs(b1,a1)
mag1=abs(h1)
%模拟低通原型滤波器幅频特性曲线
subplot(221);semilogx(w1,mag1)
fw=40 %模拟带通滤波器带宽频率
bw=sqrt(2*pi*fw) %模拟带通滤波器带宽角频率
%由模拟低通原型转变为模拟带通滤波器
[b2,a2]=lp2hp(b1,a1,wn,bw) %模拟带通滤波函数
%巴特沃斯模拟带通滤波器频率响应
[h2,w2]=freqs(b2,a2)
mag2=abs(h2)
%模拟带通滤波器幅频特性曲线(db)
subplot(222);plot(20*log10(mag2))
%冲击响应不变法进行离散化设计
fo=2000 %采样频率
[bz,az]=impinvar(b2,a2,2000) %数字带通滤波函数系数
%巴特沃斯数字带通滤波器频率响应
[hz,w]=freqz(bz,az)
magz=abs(hz)
phz=unwrap(angle(hz))
subplot(223);plot(magz) %数字带通滤波器幅频特性曲线
subplot(224);plot(phz) %数字带通滤波器相频特性曲线
运行的时候出现:
??? Error using ==> lp2hp
The A matrix must be square
Error in ==> nb at 20
[b2,a2]=lp2hp(b1,a1,wn,bw)
是怎么回事???劳烦哪位大哥解释下?