数字信号处理实验指导书(4)

2018-11-22 18:54

xn=0.8.^n; %生成x(n) hn=ones(1,N2); %生成h(n)

yln=conv(xn,hn); %直接用函数conv计算线性卷积 ycn=circonv(xn,hn,N1); %用函数circonv计算N1点循环卷积 ny1=[0:1:length(yln)-1]; ny2=[0:1:length(ycn)-1]; subplot(2,1,1); %画图 stem(ny1,yln); subplot(2,1,2); stem(ny2,ycn); axis([0,16,0,4]); 运行结果:

43线性卷积210024681012141643循环卷积2100246810121416线性卷积和循环卷积的比较图

2、利用离散傅里叶变换(DFT)分析信号的频谱

MATLAB中计算序列的离散傅里叶变换和逆变换是采用快速算法,利用fft和ifft函数实现。函数fft用来求序列的DFT,函数ifft用来求IDFT。

例2:已知序列x(n)?2sin(0.48?n)?cos(0.52?n) 0?n?100,试绘制x(n)及它的离散傅里叶变换

|X(k)|图。

MATLAB实现程序: clear all N=100; n=0:N-1;

xn=2*sin(0.48*pi*n)+cos(0.52*pi*n); XK=fft(xn,N); magXK=abs(XK); phaXK=angle(XK); subplot(1,2,1) plot(n,xn)

xlabel('n');ylabel('x(n)'); title('x(n) N=100'); subplot(1,2,2)

k=0:length(magXK)-1; stem(k,magXK,'.');

xlabel('k');ylabel('|X(k)|');

16

title('X(k) N=100'); 运行结果:

x(n) N=100321600-1-2-320100X(k) N=10080|X(k)|40050n10000x(n)信号及离散傅里叶变换|X(k)|图

50k100

3、利用FFT实现线性卷积

若序列x1(n)、N2的有限长序列,两序列的N点的循环卷积yc(n)?x1(n)?x2(n),x2(n)为长度分别为N1、

DFT的性质可知:当yl(n)?x1(n)?x2(n)。由N?N1?N2?1时有

序列较长时DFT运算通常用快速算法FFT实现。在MATLAByl(n)?yc(n)?IDFT{DFT[x1(n)]?DFT[x2(n)]}。

的信号处理工具箱中函数FFT和IFFT用于快速傅里叶变换和逆变换。

例3:用FFT实现例1中两序列的线性卷积。 MATLAB实现程序: n=[0:1:11]; m=[0:1:5]; N1=length(n); N2=length(m);

xn=0.8.^n; %生成x(n) hn=ones(1,N2); %生成h(n) N=N1+N2-1; XK=fft(xn,N); HK=fft(hn,N); YK=XK.*HK; yn=ifft(YK,N);

if all(imag(xn)==0)&(all(imag(hn)==0)) %实序列的循环卷积仍然为实序列 yn=real(yn) end

x=0:N-1;

stem(x,yn,'.')运行结果:

4321005101520利用傅里叶变换实现线性卷积的结果图

4、IIR滤波器的设计与实现

基于模拟滤波器变换原理IIR滤波器的经典设计:首先,根据模拟滤波器的指标设计出相应的模拟滤波

17

器,然后,将设计好的模拟滤波器转换成满足给定技术指标的数字滤波器。通常算法有脉冲响应不变法和双线性变换法。在MATLAB的数字信号处理工具箱中提供了相应的设计函数。常用的有: (1)Butterworth滤波器阶数选择函数

[N,Wn]=buttord(Wp,Ws,Rp,Rs)

输入参数:Wp通带截止频率,Ws阻带截止频率,Rp通带最大衰减,Rs阻带最小衰减; 输出参数:N符合要求的滤波器最小阶数,Wn为Butterworth滤波器固有频率(3dB)。 (2)零极点增益模型到传递函数模型的转换

[num,den]=zp2tf(Z,P,K);

输入参数:Z,P,K分别表示零极点增益模型的零点、极点和增益; 输出参数:num,den分别为传递函数分子和分母的多项式系数。 (3)从低通向低通的转换

[b,a]=lp2lp(Bap,Aap,Wn);

功能:把模拟滤波器原型转换成截至频率为Wn的低通滤波器。 (4)双线性变换函数

[bz,az]=bilinear(b,a,Fs);

功能:把模拟滤波器的零极点模型转换为数字滤波器的零极点模型,其中Fs是采样频率。

例4:用双线性变换法设计一个Butterworth数字低通滤波器,要求其通带截至频率0.2? rad,阻带截至频率0.4? rad,通带衰减Rp小于0.75dB,阻带衰减Rs大于20dB。 MATLAB实现程序: wp=0.2*pi; ws=0.4*pi; ap=0.75; as=20; T=1;

Wp=2/T*tan(wp/2); %求模拟原型滤波器参数 Ws=2/T*tan(ws/2);

[N,Wc]=buttord(Wp,Ws,ap,as,'s'); %求滤波器的阶数

[BS,AS]=butter(N,Wc,'s');%得到模拟原型滤波器的系统函数

[BZ,AZ]=bilinear(BS,AS,1/T);%双线性变换法转换到数字滤波器的系统函数 [H,W]=freqs(BS,AS);

plot(W/pi,20*log10(abs(H)));%画模拟原型滤波器的频响 hold on;grid;

[H,W]=freqz(BZ,AZ);

plot(W/pi,20*log10(abs(H)),'r'); %画数字滤波器的频响

运行结果:

Butterworth低通滤波器的频率响应图

5、FIR滤波器的设计与实现

FIR滤波器的设计方法常用的有窗函数法和频率采样法两种,在MATLAB的数字信号处理工具箱中提供了函数fir1。fir1是采用经典窗函数法设计线性相位FIR数字滤波器,且具有标准低通、带通、高通和带阻等类型。

18

语法格式: B=fir1(n,Wn)

B=fir1(n,Wn,’ftype’) B=fir1(n,Wn,window)

B=fir1(n,Wn,’ftype’,window)

其中,n为FIR滤波器的阶数,对于高通、带阻滤波器n取偶数。Wn为滤波器截止频率,取值范围0~1;对于带通、带阻滤波器,Wn=[W1,W2],且W1

Matlab提供了几个函数来实现这些窗函数。 W=boxcar(N); N点的矩形窗 W=triang(N); N点的三角窗 W=hanning(N); N点的汉宁窗 W=hamming(N); N点的海明窗 W=blackman(N); N点的布莱克曼窗

W=kaiser(N,beta); N点的凯泽窗(beta=0.7865)

例5: 用窗函数法设计一个线性相位FIR低通滤波器,性能指标:通带截止频率wp?0.2?,阻带截止频率ws?0.3?,阻带衰减不小于40dB,通带衰减不大于3dB。

MATLAB实现程序:

%程序中采用汉宁窗(hanning) wp=0.2*pi;ws=0.3*pi; wdelta=ws-wp;

N=ceil(8*pi/wdelta); Wn=(0.2+0.3)*pi/2;

b=fir1(N,Wn/pi,hanning(N+1)); freqz(b,1,512) 运行结果为:

500Magnitude (dB)-50-100-150-20000.10.20.30.40.50.60.7Normalized Frequency (?? rad/sample)0.80.910-500Phase (degrees)-1000-1500-2000-250000.10.20.30.40.50.60.7Normalized Frequency (?? rad/sample)0.80.91

FIR滤波器的幅频和相频特性图

19


数字信号处理实验指导书(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2016年吉林省高低压电器装配工技能考试试题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: