数字信号处理实验讲义2012(6)

2018-11-17 22:09

数字信号处理讲义

MATLAB系统分析

MATLAB信号处理工具箱提供了许多工具函数来分析滤波器(系统)的特性,包括时域分析,对任意输入响应、脉冲响应等;频域分析,幅值响应、相位响应、零极点位置;其他特性,群延迟等。滤波器时域和频域分析是设计各类滤波器、评价滤波器性能和滤波器应用基础。这里简单介绍一下有关函数。

一.时间响应分析工具filter,filtic,fftfilt和impulse

1.Filter()

函数filter用于实现IIR和FIR滤波器对数据滤波,常用来计算滤波器对输入的响应,函数调用格式为:

y=filter(b,a,x)

其中,b,a分别是滤波器系统函数H(z)的分子和分母多项式系数向量;x

为滤波器输入向量或矩阵;

函数filter可用于全极点、全零点、零极点系统。 2.Filtic()

函数filtic用于从系统过去值y和x求系统状态初始值,调用格式:

z=filtic(b,a,y,x) z=filtic(b,a,y)

其中,y=[y(n-1),y(n-2),..,y(-na)]为输出y的过去向量;x=[x(n-1),x(n-2),..,x(-nb)]为输出x的过去向量;b,a分别为分子、分母多项式系数向量;z为系统初始状态。如果,n<=-1时,x(n)=0,则filtic函数中不用指定x。

22

数字信号处理讲义

【例3-2】求解 y(n)?n31y(n?1)?y(n?2)?x(n),n?0 22其中 x(n)??14?u(n),初始条件为y(-1)=4和y(-2)=10。

解:用MATLAB计算全响应:

n=[0:7]; x=(1/4).^n; xic=[1,2]; b=[1];a=[1,1.5,0.5]; format long y1=filter(b,a,x,xic);

Matlab提供了filtic函数计算 对于上例: Y=[4,10]; xic=filter(b,a,Y)

3.Fftfilt()

函数fftfilt利用效率高的基于FFT重叠相加法实现对数据滤波,该函数只适用于FIR滤波器,函数调用格式为:

y=fftfilt(b,x) y=fftfilt(b,x,n)

式中,b为FIR滤波器系数向量;x为输入数据;n为FFT长度, 省时,

函数选择最佳的FFT长度;y为滤波器输出。

Y=fftfilt(b,x)等价于y=filter(b,1,x)。

【例3-3】:FIR低通滤波器截止频率为200Hz,采样频率Fs=1000Hz,对信号

x(t)=sin(2πf1t)+sin(2πf2t)滤波,f1=50Hz,f2=250Hz,求滤波器输出。

%Matlab Program 3.2

23

数字信号处理讲义

%Create Orignal signal data N=1000;Fs=1000; n=[0:N-1];t=n/.Fs;

x=sin(2*pi*50*t)+sin(2*pi*240*t); %Create a FIR filter with lawpass b=fir1(40,200/500); %Filtering the data yfft=fftfilt(b,x,256); %Output n1=81:241;

t1=t(n1);x1=x(n1);y1=yfft(n1); subplot(221);plot(t1,x1); tilte(‘Original Signal’); subplot(222);plot(t1,y1); title(‘Signal after the filter’); grid;

执行上面这个程序,分析程序结果。 4.Impz()

impz用于产生数字系统的脉冲响应。基本调用格式为:

[h,t]=impz(b,a,n,Fs)

b,a分别为系统传递函数分子和分母多项式系数向量;n为采样点数;Fs为采样周期,缺省值=1;h为单位脉冲响应向量;t为和h对应的时间向量。当函数输出缺省时,绘制系统脉冲响应图;当n缺省时,函数自动选择n值。

在Matlab中,h=impz(b,a,n)等价于下面语句:

24

数字信号处理讲义

x=[1 zeros(1,n)]; h=filter(b,a,x);

因此,不少场合下,用后一种方法求系统的脉冲响应更为灵活。

5. Conv()

线性时不变系统的输入输出关系还可通过单位脉冲响应h(n)表示:

y(n)=x(n)*h(n)=?x(k)h(n?k)

k?0N所以可直接采用MATLAB中的函数conv或者用可求出带下标的序列卷积的函数conv_m来求系统对输入的响应。

二.

1. Freqs()

函数freqs用于求模拟滤波器的频率响应。调用格式为

h=freqs(b,a,ω); [h,ω]=freqs(b,a,n); freqs(b,a)

其中,b,a分别为模拟滤波器传递函数分子和分母多项式向量;n 为频率点数(整数),缺省=200;h为频率响应,复数;ω频率向量,实数。

函数缺省时,绘制模拟滤波器的幅频响应图和相频响应图。 模拟滤波器的系统函数形式为

频率响应

b(1)snb?b(2)snb?1?...?b(nb?1)H(z)?????(式3?7) nana?1a(1)s?a(2)s?...?a(na?1)输出h为模拟滤波器的频率响应H(ejω)。 2.Freqz()

函数freqz用于求数字滤波器的频率响应。调用格式为

[h,ω]=freqz(b,a,n); [h,f]=freqz(b,a,n,Fs);

[h,ω]=freqz(b,a,n,’whole’); [h,f]=freqz(b,a,n,’whole’,Fs);

25

数字信号处理讲义

[h]=freqz(b,a,f,Fs); freqz(b,a);

说明:

(1)函数输入:b,a分别为数字滤波器传递函数分子和分母多项式向

量;n为频率点数(整数),最好为2的幂,缺省=512;Fs为采样频率,Hz;f为给定的频率矢量;’whole 表示返回的ω值为包含z整个单位圆频率矢量,即0~2π;缺省时,ω仅为包含z平面上半单位圆(0~π)之间等间距N个点频率矢量。

函数返回:h为频率响应,复数;ω为n点频率向量(弧度),返

回范围与输入参量‘whole’有关;f为n点频率向量(Hz)。

函数缺省时,绘制模拟滤波器的幅频响应图和相频响应图。 (2)该函数适用于和式3-1形式的数字滤波器。 (3)该函数执行补零的FFT算法,即h=fft(b,n)./fft(a,n)

(4)Matlab提供两个函数ABS和ANGLE由频率响应H(ejω)求幅频响应| H(ejω)|和相频响应arg[H(ejω)].

(5)函数freqz输出的频率向量ω在0~2π之间,为了获得一个滤波器真正的相频特性图,要对相位角ω进行修正。为此Matlab信号处理工具箱提供一个函数UNWRAP. 3.UNWRAP.

函数UNWARP展开由函数freqz产生的频率ω.调用格式为:

P=unwrap(ω) 三.

零极点图

系统零极点位置决定了系统稳定性和性能,因此,考察系统零极点位置是分析系统特性重要方面之一。

26


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

下一篇:2016尔雅中国古代史课后作业答案

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

马上注册会员

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