[bz,az]=impinvar(b,a,Fs)
[bz,az]=impinvar(b,a)
例如:取采样频率f=1KHz,用双线性变换法设计五阶Butterworth低通数字滤波器,绘出模拟滤波器与数字滤波器的幅频与相频特性,MATLAB程序如下:
[z,p,k]=buttap(5) % 设计五阶Butterworth低通模拟滤波器原型
[zd,pd,kd]=bilinear(z,p,k,1000)%双线性变换得到低通数字滤波器
[b,a]=zp2tf(zd,pd,kd)%滤波器类型转换
w=128
freqs(b,a,w)
figure
freqz(b,a,w)
实例:1、设带通滤波镇拆器的滤波器中心频率为W0=2KHz,带宽为BW=100Hz, 取采样频率f=10kHZ,用脉冲相应不变法设计,设计五阶带通Butterworth数字滤波器,绘出数字滤波器的频谱特性
[z,p,k]=buttap(5)
[b,a]=zp2tf(z,p,k)
w=128
w0=2000
[bt,at]=lp2bp(b,a,w0,10000)
[bz,az]=impinvar(b,a,w)
freqz(bt,at,w)
2、直接设计五阶butterworth带通滤波器,绘出频谱图。(高端与低端截止频率分别为0.2和0.9)
figure
w=[0.2,0.9]
[b,a]=butter(5,w)
freqz(b,a)
3、设高通截止频率为w0=10000Hz, 取采样频率f=20000,用指正双线性变换法设计六阶高通Butterworth数字滤波器,绘出数字滤波器的频谱特性
[z,p,k]=besselap(6)
[b,a]=zp2tf(z,p,k)
w=128
w0=10000
[bt,at]=lp2hp(b,a,w0)
[bz,az]=bilinear(bt,at,20000)
freqz(bz,az,w)
4、取采样频率f=100Hz,用双线性变换法设计五阶Butterworth低通数字滤波器,绘出模拟滤波器与数字滤波器的幅频与相频特性
御逗枣 [z,p,k]=buttap(5)
[zd,pd,kd]=bilinear(z,p,k,100)
[b,a]=zp2tf(zd,pd,kd)
w=128
freqs(b,a,w)
figure
freqz(b,a,w)
具体的得根据情况自己确定
y=0.03 0.14 0.01 0.20 0.09 0.12 0.11 0.20 0.23 0.20 0.14 0.12 0.17 0.13 0.07 0.10就是上面代码的yt,你可以这么写:
clc,clear
y=[0.03 0.14 0.01 0.20 0.09 0.12 0.11 0.20 0.23 0.20 0.14 0.12 0.17 0.13 0.07 0.10]
yt=y'n=length(yt)
alpha=[0.2 0.5 0.8]m=length(alpha)
yhat(1,1:m)=(yt(1)+yt(2))/2
for i=2:n
yhat(i,:)=alpha*yt(i-1)+(1-alpha).*yhat(i-1,:)
end
yhat
err=sqrt(mean((repmat(yt,1,m)-yhat).^2))
xlswrite('lilv.xls',yhat)
yhat2014=alpha*yt(n)+(1-alpha).*yhat(n,:)
x是时间,在这里没什么用
最后运行结果是:
yhat =
0.08500.08500.0850
0.07400.05750.0410
0.08720.09880.1202
0.07180.05440.0320
0.09740.12720.1664
0.09590.10860.1053
0.10070.11430.1171
0.10260.11210.1114
0.12210.15610.1823
0.14370.19300.2205
0.15490.19650.2041
0.15190.16830.1528
0.14560.14410.1266
0.15040.15710.1613
0.14640.14350.1363
0.13110.10680.0833
err =
0.06320.06430.0718
yhat2014 =
0.12490.10340.0967
%当1KHz≤f≤2KHz时,衰减至少为18 dB,当f≤500Hz,肆巧缺f≥3KHz时,波纹在3dB内,采样频率fs为10KHz。%要求采用巴特沃斯型模拟滤波器进行设计,画出所设计裂辩滤波器的幅度特性曲线,并写出其系统函数H(z)的表达式宽友。 f和pi之间怎么转化呢?f≤500Hz,f≥3KHz这在程序中怎么表示?求完整程序 急!!!
clear all
close all
clc
fs=10*1e+3
fsl=1*1e+3
fsh=2*1e+3
% fpl=500
fpl=800
fph=3*1e+3
alphal=18
alphah=3
ws1=fsl/fs
ws2=fsh/fs
wp1=fpl/fs
wp2=fph/fs
wp=[wp1 wp2]
ws=[ws1 ws2]
[n,Wn] = buttord(wp,ws,alphah,alphal)
[z,p,k] = buttap(n)
b=poly(z)
a=poly(p)
Wo=sqrt(2*pi*fpl*2*pi*fph)
Bw=2*pi*fph-2*pi*fpl
[bt,at] = lp2bs(b,a,Wo,Bw)
[numd,dend] = bilinear(bt,at,fs)
[H,w]=freqz(numd,dend)
plot(w/pi*fs/2,abs(H))
grid
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)