数字信号处理实验讲义(修订版)

数字信号处理实验讲义

set(gca,'YTickMode','manual','YTick',[-50,0])

set(gca,'YTickLabelMode','manual','YTickLabel',['50';' 0']) set(gcf,'color','w'); % 置图形背景色为白

4、在MATLAB 中产生窗函数 (1)矩形窗(Rectangle Window)

调用格式:w=boxcar(n),根据长度n 产生一个矩形窗w。 (2)三角窗(Triangular Window)

调用格式:w=triang(n) ,根据长度n 产生一个三角窗w。 (3)汉宁窗(Hanning Window)

调用格式:w=hanning(n) ,根据长度n 产生一个汉宁窗w。 (4)海明窗(Hamming Window)

调用格式:w=hamming(n) ,根据长度n 产生一个海明窗w。 (5)布拉克曼窗(Blackman Window)

调用格式:w=blackman(n) ,根据长度n 产生一个布拉克曼窗w。 (6)恺撒窗(Kaiser Window)

调用格式:w=kaiser(n,beta) ,根据长度n 和影响窗函数旁瓣的β参数产生一个恺撒窗w。

5、基于窗函数的FIR 滤波器设计 利用MATLAB 提供的函数firl 来实现。

调用格式:firl (n,Wn,’ftype’,Window),n 为阶数、Wn 是截止频率(如果输入是形如[W1 W2]的矢量时,本函数将设计带通滤波器,其通带为W1<ω

34

数字信号处理实验讲义

其理想幅频特性满足Hd(ej?)???1,0???0.4?

?0,elseWindow=boxcar(8); %长度为8 的矩形窗Window b=fir1(7,0.4,Window); freqz(b,1)

Window=blackman(8); %长度为8 的布拉克曼窗Window b=fir1(7,0.4,Window); freqz(b,1)

[例]设计线性相位带通滤波器,设计指标:长度N=16,上下边带截止频率分别为 W1= 0.3*pi;w2=0.5*pi; Window=blackman(16);

b=fir1(15,[0.3 0.5],Window); freqz(b,1)

[例]设计指标为:ωp=0.2π Rp=0.25dB ωa=0.3π As=50dB 的低通数字FIR 滤波器。 wp=0.2*pi; ws=0.3*pi; wc=(ws+wp)/2; tr_width=ws-wp; M=ceil(6.6*pi/tr_width)+1; N=[0:1:M-1]; alpha=(M-1)/2; n=[0:1:(M-1)]; %n=[0,(M-1)]; m=n-alpha + eps;

hd=sin(wc*m)./(pi*m); w_ham=(boxcar(M))'; h=hd.*w_ham;

[H,w]=freqz(h,[1],1000,'whole'); H=(H(1:501))'; w=(w(1:501))'; mag=abs(H);

db=20*log10((mag+eps)/max(mag)); pha=angle(H);

grd=grpdelay(h,[1],w); delta_w=2*pi/1000;

Rp=-(min(db(1:1:wp/delta_w+1)));

As=-round(max(db(ws/delta_w+1:1:501))); Close all;

subplot(2,2,1);stem(hd);title('理想冲击响应') axis([0 M-1 -0.1 0.3]);ylabel('hd[n]');

subplot(2,2,2);stem(w_ham);title('汉明窗'); axis([0 M-1 0 1.1]);ylabel('w[n]');

subplot(2,2,3);stem(h);title('实际冲击响应'); axis([0 M-1 -0.1 0.3]);ylabel('h[n]');

subplot(2,2,4);plot(w/pi,db); title('衰减幅度'); axis([0 1 -100 10]);ylabel('Decibles');

35

数字信号处理实验讲义

附录一 滤波器设计示例

一、Matlab设计IIR基本示例

(1)直接设计数字滤波器

低通,采样频率为1Hz,通带临界频率fp =0.2Hz,通带内衰减小于1dB(αp=1);阻带临界频率fs=0.3Hz,阻带内衰减大于25dB(αs=25)。设计一个数字滤波器满足以上参数。 % Matlab使用归一化的频率参数(临界频率除以采样频率的1/2)。

%这样临界频率参数的取值范围在0和1之间,1代表Fs/2(用角频率表示的时候对应π) FS=1

[n,Wn]=buttord(0.2/(FS/2),0.3/( FS /2),1,25); [b,a]=butter(n,Wn); freqz(b,a,512, FS);

(2)脉冲相应不变法

低通,采样频率为1Hz,通带临界频率fp =0.2Hz,通带内衰减小于1dB(αp=1);阻带临界频率fs=0.3Hz,阻带内衰减大于25dB(αs=25)。设计一个数字滤波器满足以上参数。 FS=1

[n,Wn]=buttord(0.2*2*pi,0.3*2*pi,1,25,'s'); %临界频率采用角频率表示 [b,a]=butter(n,Wn,'s'); %freqs(b,a) %设计模拟的

[bz,az]=impinvar(b,a,FS); %映射为数字的 freqz(bz,az,512,FS)

36

数字信号处理实验讲义

(3)双线性变换

低通,采样频率为1Hz,通带临界频率fp =0.2Hz,通带内衰减小于1dB(αp=1);阻带临界频率fs=0.3Hz,阻带内衰减大于25dB(αs=25)。设计一个数字滤波器满足以上参数。 FS=1

%通带、阻带截止频率 Fl=0.2;Fh=0.3; %频率预畸

wp=(Fl/FS)*2*pi; %临界频率采用角频率表示 ws=(Fh/FS)*2*pi; %临界频率采用角频率表示 OmegaP=2*FS*tan(wp/2); OmegaS=2*FS*tan(ws/2);

[n,Wn]=buttord(OmegaP,OmegaS,1,25,'s'); [b,a]=butter(n,Wn,'s'); %freqs(b,a) %设计模拟的

[bz,az]=bilinear(b,a,FS); %映射为数字的 freqz(bz,az,512,FS,'whole')

37

联系客服:779662525#qq.com(#替换为@)