基于MATLAB的离散信号与系统分析毕业论文 下载本文

湖北工业大学商贸学院毕业设计

subplot?2,2,2?, stem?k,Xa,'filled'?,title('模'); subplot?2,2,4?, stem?k,Xn,'filled'?,title('相角');

下面我们通过一个实例来说明上述理论结果: 用MATLAB画出f1(k)?e性与角频率的关系。

解:实现上述过程的MATLAB 的命令如下:

jk?4并分析实部﹑虚部﹑相角的周期,f2(k)?ej2k的时域波形,

dxzsu?0,20,pi/4? dxzsu?0,20,2 ?

上述命令绘制的虚指数序列波形分别如图2—3和2—4所示。

图2—3周期虚指数序列波形

图2—4非周期虚指数序列波形

10

湖北工业大学商贸学院毕业设计

由下面两图可见,只有当虚指数序列的角频率满足2?/w 为有理数时,信号的实部和虚部和相角皆为周期序列,否则为非周期序列。

2.3.4 复指数序列

复指数序列的一般形式为:f(k)?rkejwk (2-7) 由欧拉公式得:f(k)?rkejwk?rk [cos(wk ) + j sin(wk )] 式中:Re{f (k)} = rk cos(wk)为f?k?的实部ejwk

Im{f (k )}= rk sin(wk)为f?k?的虚部

可见,复指数序列f?k?的实部和虚部分别为幅度按指数规律变化的正弦序列。当r>1时,f?k?的实部和虚部分别为指数增长的正弦序列;当0<r<1时,f?k?的实部和虚部分别为指数衰减的正弦序列;当r?1时,f?k?的实部和虚部分别为等幅正弦序列。

绘制复指数序列时域波形的MATLAB函数如下:

function dfzsu?n1,n2,r,w? %n1:绘制波形的虚指数序列的起始时间序号

%n2:绘制波形的虚指数序列的终止时间序号 %w:虚指数序列的角频率 %r: 指数序列的底数

k?n1:n2;

f?(r*exp(i*w))k;

Xr?real?f?; Xi?imag?f?; Xa?abs?f?; Xn?angle?f?;

subplot?2,2,1?, stem?k,Xr,'filled'?,title('实部'); subplot?2,2,3?, stem?k,Xi,'filled'?,title('虚部'); subplot?2,2,2?, stem?k,Xa,'filled'?,title('模'); subplot?2,2,4?, stem?k,Xn,'filled'?,title('相角');

2.4 离散时间序列卷积和及MATLAB实现

离散时间序列f1(k) 和f2(k)的卷积和定义为:

f(k)?f1(k)*f2(k)??f1(k)?f2(k?i),i?R (2-8) 在离散信号与系统的分析过程中,我们有两个与卷积和相关的重要结论,这就是:

11

湖北工业大学商贸学院毕业设计

(1)f(k)??f(i)??(k?i)?f(k)*?(k),i?R, (2-9) 即离散序列可分解为一系列幅度由f(k)决定的单位序列?(k)及其平移序列之和。 (2)对线性时不变系统,设其输入序列为f (k ),单位响应为h(k),其零状态响应为y(k),则有:y(k)??f(i)?h(k?i)?f(k)*h(k),i?R (2-10) 可见,离散序列卷积和的计算对进行离散信号与系统的分析具有非常重要的意义。

MATLAB的conv()函数可以帮助我们快速求出两个离散序列的卷积和。conv函数的调用格式为:f ? conv ?f1,f2?

其中f1为包含序列f1(k)的非零样值点的行向量,f2为包含序列f2(k)的非零样值点的行向量,向量f则返回序列set?gca,'position',h?的所有非零样值点行向量。

下面是利用MATLAB计算两离散序列卷积和f(k)?f1(k)*f2(k)的实用函数dconv? ?,该程序在计算出卷积和f(k)的同时,还绘出序列f1(k) 、f2(k)和f(k)的时域波形图,并返回f(k)的非零样值点的对应向量。

function ?f,k??dconv?f1,f2,k1,k2? % The function of compute f?f1*f2

% f: 卷积和序列f(k)对应的非零样值向量 % k: 序列f(k)的对应序号向量 % f1: 序列f1(k)非零样值向量 % f2: 序列f2(k)的非零样值向量 % k1: 序列f1(k)的对应序号向量 % k2: 序列f2(k)的对应序号向量

f?conv?f1,f2? %计算序列f1与f2的卷积和f k0?k1?1??k2?1?; %计算序列f非零样值的起点位置 k3?length?f1??length?f2??2; %计算卷积和f的非零样值的宽度

k?k0:k0?k3 %确定卷积和f非零样值的序号向量

stem?k1,f1?

stem?k1,f1? %在子图1绘序列f1(k)时域波形图 title?'f1?k?'? xlabel?'k'? ylabel?'f1?k?'? subplot?2,2,2?

12

湖北工业大学商贸学院毕业设计

stem?k2,f2? %在图2绘序列f2(k)时波形图 title?'f1?k?'? xlabel?'k'? ylabel?'f2?k?'? subplot?2,2,3?

stem?k,f?; %在子图3绘序列f(k)的波形图 title('f?k?f1?k?与f2?k?的卷积和f?k?')xlabel?'k'? ylabel?'f?k?'?

h?get?gca,'position'?; h?3??2.5*h?3?;

set?gca,'position',h? %将第三个子图的横坐标范围扩为原来的2.5倍

2.5 离散系统的单位响应及MATLAB实现

LTI离散系统当输入为单位序列?(k)时产生的零状态响应称为系统的单位响应,用

h(k)表示。系统输入为单位阶跃序列e(k)时产生的零状态响应称为系统的单位阶跃响应,

记为g(k)。对LTI离散系统,设其输入序列为f(k),单位响应为h(k),零状态响应为y(k),则有:?aiy(k?i)??bjf(k?j)即h(k)包含了离散系统的固有特性,与输入序列无关。

i?0j?0NN我们只要知道了离散系统的单位响应,即可求得系统在不同输入时产生的输出。

因此,求解离散系统的单位响应h(k)对我们进行离散系统的分析也同样具有非常重要的意义。

MATLAB为用户提供了专门用于求离散系统单位响应并绘制其时域波形的函impz()。在调用函数impz()时,与连续系统一样,我们也需要用向量来对离散系统进行表示。设描述离散系统的差分方程为

?ay(k?i)??bf(k?j),0?i、j?N (2-11)

ij则我们可以用向量a和b表示该系统,即

a?[a0,a1,……,aN?1,aN] b?[b0,b1,……,bM?1,bM]

注意,在用向量来表示差分方程描述的离散系统时,缺项要用0来补齐。

函数 impz? ?能绘出向量a和b定义的离散系统在指定时间范围内单位响应的时域波形,并能求出系统单位响应在指定时间范围内的数值解。

13