例2.5
如果是LTI系统,考虑到h(n)的冲激响应可以表示为一个差分方程,y(n)可以通过filter函数得到
由h(n)的定义可知,h(n)是输入信号为冲激信号的输出信号,因此,可以用x代替冲激信号,用y代替h,差分方程如下
现在可以利用matlab的函数filter来间接计算卷积
>> b=[1];
>> a=[1,-0.9];
>> n=-5:50;
>> x=stepseq(0,-5,50)-stepseq(10,-5,50);
>> y=filter(b,a,x);
>> subplot(1,1,1);
>> subplot(2,1,2);
>> stem(n,y);
>> axis([-5,50,-0.5,8]);
在例2.10,单位冲激响应是一个单边指数序列,且这个单边指数序列外面可以用一个差分方程来表示,但是这不意味着所有的单位冲激响应都可以转换成差分方程,但是,上述的分析可以扩展到单边指数序列的线性合成,着将会导致形成高阶差分方程,在章节4中,我们将会讨论从一个表示形式转换到另一表示形式这一主题。
零输入与零状态响应
在数字信号处理中,差分方程的解的时间通常是n=0之后的时间,所以x(n),y(n)的初始状况在决定n>=0的输出时起着至关重要的作用。一个差分方程以这样的形式给出
初始条件如下
(2.21)的解决可以从以下的形式获得
yZI是零输入响应,这个响应只决定于初始状况(假设存在初始状况),零输入响应yZS是一个仅仅决定于输入x(n)的响应(假设初始状况为0),在matlab函数filter可以用来解决有初始条件的差分方程,我们将会在第四章解释。
数字滤波器
滤波器是一个被设计用来选择频率以及去除频率的线性时不变系统,所以离散时间LIT系统也被称为数字滤波器,这里有两种数字滤波器
FIR滤波器
如果LTI系统的单位冲激响应是在有限区间上的,则系统被称为有限区间冲激响应滤波器(finite-duration impulse response filter),所以对应这样一种形式的滤波器
差分方程(2.18)
的下面这一部分
被称为因果FIR滤波器。
除此之外,对于这样一种h(n),满足
然而其他所有的h(n)都为0的FIR滤波器,非递归(nonrecursive)或滑动平均(moving average-MA)滤波器,在matlabFIR滤波器代表冲激响应h(n)或作为差分方程的系数
所以为了使用FIR滤波器,我们可以使用conv(x,h)函数(以及我们讨论改进的conv_m函数)或者filter(b,1,x)函数,要注意这两个函数的输出有所差别,conv(x,h)的输出序列长度比x(n)和h(n)还要长,另一方面,filter(b,1,x)函数的输出序列的长度与x(n)的长度一样长,在实际应用中,通常鼓励使用filter函数。
IIR滤波器
如果LIT系统的冲激响应是无限区间的,则该系统称为IIR滤波器(infinite-duration impluse response-IIR)对应差分方程(2.18)
的下面这一部分
表述了一个递归滤波器,该滤波器的输出y(n)总是递归地由它的先前的值计算得出,也被称为AR(autoregressive)滤波器,这样一个滤波器的冲激响应是无限区间,所以它代表一个IIR滤波器,总方程(2.18)同样也是一个IIR滤波器,它有两部分,AR以及MA,这样一个滤波器被称为自回归滑动平均滤波器(ARMA),在matlab,IIR滤波器可以被描述为系数为bm,am的差分方程,并且可以通过filter(b,a,x)函数应用。