matlab wc wp,MATLAB_IIR_带通通滤波

clear

%%%%%%%%带通滤波器%%%%%%%%%%%

WP1=0.1*pi;WP2=0.5*pi;

WS1=0.04*pi;WS2=0.8*pi;

Ap=1;As=50; % 数字带通滤波器技术指标

T=2;%一般取2

wc1=(2/T)*tan(WP1/2);

wc2=(2/T)*tan(WP2/2);

wr1=(2/T)*tan(WS1/2);

wr2=(2/T)*tan(WS2/2);%双线性下,数字到模拟指标的转换

B=wc2-wc1; %带通滤波器的通带宽度

w0=sqrt(wc1*wc2);

normwr1=(((wr1^2)-(w0^2))/(B*wr1));

normwr2=(((wr2^2)-(w0^2))/(B*wr2));

normwc1=(((wc1^2)-(w0^2))/(B*wc1));

normwc2=(((wc2^2)-(w0^2))/(B*wc2)); %带通到低通的频率变换

if abs(normwr1)>abs(normwr2) %选通带截止频率较大者

normwr=abs(normwr2)

else normwr=abs(normwr1)

end

normwc=1; %将指标转换成归一化模拟低通滤波器的指标

[N,normw]=buttord(normwc,normwr,Ap,As,'s')%设计归一化的模拟低通滤波器阶数N和截止频率

[bLP,aLP]=butter(N,normw,'s'); %计算相应的模拟滤波器系统函数G(p)

[bBP,aBP]=lp2bp(bLP,aLP,w0,B); %模拟域频率变换,将G(P)变换成模拟带通滤波器H(s) [numd,dend]=bilinear(bBP,aBP,0.5); %用双线性变换法将H(s)转换成数字带通滤波器H(z) ?

f=67; %周期67Hz

nt=1; %显示两个周期

N1=128; T=1/f; dt=T/N1; %把周期分成128分

k1=0:nt*N1-1; nx=k1*dt;

x=square(2*pi*f*nx,50); %方波产生函数50%的占空比

subplot(3,2,1);

stem(nx,x);

xlabel('tn(s)')

ylabel('x')

title('方波时域图67Hz')

L=8*N1;

X=fft(x,L);

X1=fftshift(X);

W1=linspace (-pi,pi,L);

subplot(3,2,2);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值