当前位置:文档之家› 数字滤波器的设计及实现

数字滤波器的设计及实现

数字滤波器的设计及实现
数字滤波器的设计及实现

设计二数字滤波器的设计及实现

代码:

%复合信号st产生函数mstg清单:

function st=mstg

figure(1)

%产生信号序列st,并显示st时域波形和频谱

%st=mstg返回三路调幅信号相加的形成的混合信号

%长度N=800

N=800;Fs=10000;T=1/Fs;Tp=N*T;%采样频率Fs=10kHz,Tp为采样时间

t=0:T:(N-1)*T;k=0:N-1;f=k/Tp;

fc1=Fs/10;fm1=fc1/10;%第1路调幅信号载波频率fc1=1000Hz,调制频fm1=100Hz fc2=Fs/20;fm2=fc2/10;%第2路调幅信号载波频率fc2=500Hz,调制频率fm2=50Hz fc3=Fs/40;fm3=fc3/10;%第3路调幅信号载波频率fc3=250Hz,调制频率fm3=25Hz xt1=cos(2*pi*fm1*t).*cos(2*pi*fc1*t);%产生第1路调幅信号

xt2=cos(2*pi*fm2*t).*cos(2*pi*fc2*t);%产生第2路调幅信号

xt3=cos(2*pi*fm3*t).*cos(2*pi*fc3*t);%产生第3路调幅信号

st=xt1+xt2+xt3;%3路信号相加得到复合信号

fxt=fft(st,N);%计算信号st的频谱

%下面为绘图命令

subplot(2,1,1);

plot(t,st);grid;xlabel('t/s');ylabel('s(t)');

axis([0,Tp,min(st),max(st)]);title('(a)s(t)的波形');

subplot(2,1,2);

stem(f,abs(fxt)/max(abs(fxt)),'.');grid;title('(b)s(t)的频谱')

axis([0,Fs/8,0,1.2]);

xlabel('f/Hz');ylabel('幅度');

figure(2)

fp=340;fs=370;Fs=10000;

Wp=2*fp/Fs;Ws=2*fs/Fs;

Rp=0.1;Rs=60;%低通滤波器指标

[N,Wpo]=ellipord(Wp,Ws,Rp,Rs);

[B,A]=ellip(N,Rp,Rs,Wpo);%计算滤波器系统函数系数

subplot(3,1,1);

W=0:0.01:pi;

[H,W]=freqz(B,A,W);%计算频率向量W上的滤波器频率响应

H=20*log(abs(H));%纵坐标单位取dB

plot(W/pi,H)%绘制幅频响应曲线

grid on%添加网格

axis([0,1,-200,10])

xlabel('\omega/\pi (rad/s)');

ylabel('|H(e^j^\omega)|/dB');

subplot(3,1,2);

y3=filter(B,A,st);

plot(t,y3);

axis([0,Tp,min(st),max(st)]);title('(a)S3(t)的波形');

subplot(3,1,3);

Y3=abs(fft(y3,800));

stem(f,Y3/max(Y3),'.');grid;title('(b)S3(t)的频谱')

axis([0,Fs/8,0,1.2]);

xlabel('f/Hz');ylabel('幅度');

figure(3)

%双线性变换法设计椭圆数字滤波器

fpl=445,fpu=580,fsl=360,fsu=670,Fs=10000;

Wpl=2*fpl/Fs;Wpu=2*fpu/Fs;Wsl=2*fsl/Fs;Wsu=2*fsu/Fs;

Rp=0.1;Rs=60;

Wp=[Wpl,Wpu];Ws=[Wsl,Wsu]%带通滤波器指标

[N,Wso]=cheb2ord(Wp,Ws,Rp,Rs);%计算椭圆数字滤波器的阶数N和通带边界频率[B,A]=cheby2(N,Rs,Wso);%用双线性变换法设计椭圆数字滤波器

subplot(3,1,1);

W=0:0.01:pi;

[H,W]=freqz(B,A,W);%计算频率向量W上的滤波器频率响应

H=20*log10(abs(H));%纵坐标单位取dB

plot(W/pi,H),grid on%绘制幅频响应曲线

axis([0,1,-100,10])

xlabel('频率/(rad/s)');

ylabel('幅度/dB');

subplot(3,1,2);

y2=filter(B,A,st);

plot(t,y2);

axis([0,Tp,min(st),max(st)]);title('(a)s(t)的波形');

subplot(3,1,3);

Y2=abs(fft(y2,800));

stem(f,Y2/max(Y2),'.');grid;title('(b)S2(t)的频谱')

axis([0,Fs/8,0,1.2]);

xlabel('f/Hz');ylabel('幅度');

figure(4)

%双线性变换法设计椭圆高通数字滤波器

fp=850,fs=800,Fs=10000;

Wp=2*fp/Fs;Ws=2*fs/Fs;

Rp=0.1;Rs=60;

[N,Wpo]=ellipord(Wp,Ws,Rp,Rs);%计算椭圆数字滤波器的阶数N和通带边界频率[B,A]=ellip(N,Rp,Rs,Wpo,'high');%用双线性变换法设计椭圆数字滤波器

W=0:0.01:pi;

[H,W]=freqz(B,A,W);%计算频率向量W上的滤波器频率响应

H=20*log10(abs(H));%纵坐标单位取dB

subplot(3,1,1);

plot(W/pi,H),grid on%绘制幅频响应曲线

axis([0,1,-100,10])

xlabel('频率/(rad/s)');

ylabel('幅度/dB');

subplot(3,1,2);

y1=filter(B,A,st);

plot(t,y1);

axis([0,Tp,min(st),max(st)]);title('(a)s(t)的波形'); subplot(3,1,3);

Y1=abs(fft(y1,800));

stem(f,Y1/max(Y1),'.');grid;title('(b)S1(t)的频谱') axis([0,Fs/8,0,1.2]);

xlabel('f/Hz');ylabel('幅度');

(1)

(2)

(3)

相关主题
文本预览
相关文档 最新文档