离散时间信号表与运算
- 格式:doc
- 大小:293.00 KB
- 文档页数:9
离散时间信号的傅里叶变换和离散傅里叶变换摘要本文主要介绍了离散时间信号的离散时间傅里叶变换及离散傅里叶变换,说明其在频域的具体表示和分析,并通过定义的方法和矩阵形式的表示来给出其具体的计算方法。
同时还介绍了与离散时间傅里叶变换(DTFT )和离散傅里叶变换(DFT )相关的线性卷积与圆周卷积,并讲述它们之间的联系,从而给出了用圆周卷积计算线性卷积的方法,即用离散傅里叶变换实现线性卷积。
1. 离散时间傅里叶变换1.1离散时间傅里叶变换及其逆变换离散时间傅里叶变换为离散时间序列x[n]的傅里叶变换,是以复指数序列{}的序列来表示的(可对应于三角函数序列),相当于傅里叶级数的展n j e ω-开,为离散时间信号和线性时不变系统提供了一种频域表示,其中是实频率ω变量。
时间序列x[n]的离散时间傅里叶变换定义如下:)(ωj e X (1.1)∑∞-∞=-=nnj j e n x e X ωω][)(通常是实变量的复数函数同时也是周期为的周期函数,并且)(ωj e X ωπ2的幅度函数和实部是的偶函数,而其相位函数和虚部是的奇函数。
)(ωj e X ωω这是由于:(1.2))()()(tan )()()()(sin )()()(cos )()(222ωωωωωωωωωωθωθωθj re j im j im j re j j j im j j re e X e X e X e X e X e X e X e X e X =+===由于式(1.1)中的傅里叶系数x[n]可以用下面给出的傅里叶积分从中算出:)(ωj e X 1(1.3)ωπωππωd e eX n x n j j )(21][⎰-=故可以称该式为离散时间傅里叶逆变换(IDTFT ),则式(1.1)和(1.3)构成了序列x[n]的离散时间傅里叶变换对。
上述定义给出了计算DTFT 的方法,对于大多数时间序列其DTFT 可以用收敛的几何级数形式表示,例如序列x[n]=,此时其傅里叶变换可以写成简单n α的封闭形式。
第2章离散时间信号的表示及运算2.1实验目的学会运用MATLAB表示的常用离散时间信号;学会运用MATLAB实现离散时间信号的基本运算。
2.2实验原理及实例分析221 离散时间信号在 MATLAB 中的表示离散时间信号是指在离散时刻才有定义的信号,简称离散信号,或者序列。
离散序列通常用x(n)来表示,自变量必须是整数。
离散时间信号的波形绘制在MATLAB中一般用Stem函数。
stem函数的基本用法和Plot函数一样,它绘制的波形图的每个样本点上有一个小圆圈,默认是空心的。
如果要实心,需使用参数“fill、"‘filled ,或者参数:”。
由于MATLAB中矩阵元素的个数有限,所以MATLAB 只能表示一定时间范围内有限长度的序列;而对于无限序列,也只能在一定时间范围内表示出来。
类似于连续时间信号,离散时间信号也有一些典型的离散时间信号。
1. 单位取样序列单位取样序列J.(n),也称为单位冲激序列,定义为(n =0)(12-1)(n = 0)要注意,单位冲激序列不是单位冲激函数的简单离散抽样,它在n=0处是取确定的值1。
在MATLAB中,冲激序列可以通过编写以下的impDT.m文件来实现,即function y=impDT(n)y=(n==0); %当参数为0时冲激为1,否则为0调用该函数时n必须为整数或整数向量。
【实例2-1】禾U用MATLAB的impDT函数绘出单位冲激序列的波形图。
解:MATLAB源程序为>>n=-3:3;>>x=impDT(n);>>stem(n,x,'fill'),xlabel('n'),grid on>>title('单位冲激序列’)>>axis([-3 3 -0.1 1.1])程序运行结果如图12-1所示。
2. 单位阶跃序列单位阶跃序列u(n)定义为u(n)(n —O) (n 0)(12-2)在MATLAB 中,冲激序列可以通过编写uDT .m 文件来实现,即function y=uDT(n) y=n>=0;%当参数为非负时输出 1调用该函数时n 也同样必须为整数或整数向量。
实验一 离散时间信号的表示及运算一、实验目的学会运用MATLAB 表示的常用离散时间信号;学会运用MATLAB 实现离散时间信号的基本运算。
二、实验原理(一) 离散时间信号在MATLAB 中的表示离散时间信号是指在离散时刻才有定义的信号,简称离散信号,或者序列。
离散序列通常用)(n x 来表示,自变量必须是整数。
离散时间信号的波形绘制在MATLAB 中一般用stem 函数。
stem 函数的基本用法和plot 函数一样,它绘制的波形图的每个样本点上有一个小圆圈,默认是空心的。
如果要实心,需使用参数“fill ”、“filled ”,或者参数“.”。
由于MATLAB 中矩阵元素的个数有限,所以MATLAB 只能表示一定时间范围内有限长度的序列;而对于无限序列,也只能在一定时间范围内表示出来。
类似于连续时间信号,离散时间信号也有一些典型的离散时间信号。
(二) 离散时间信号的基本运算对离散时间序列实行基本运算可得到新的序列,这些基本运算主要包括加、减、乘、除、移位、反折等。
两个序列的加减乘除是对应离散样点值的加减乘除,因此,可通过MATLAB 的点乘和点除、序列移位和反折来实现,与连续时间信号处理方法基本一样。
三、实验内容(包括代码与产生的图形)1. 试用MATLAB 命令分别绘出下列各序列的波形图。
(1)()()n u n x n⎪⎭⎫⎝⎛=21 (2)()()n u n x n 2=(3)()()n u n x n⎪⎭⎫⎝⎛-=21 (4)()()()n u n x n 2-=(5)()()121-=-n u n x n (6)()()n u n x n 121-⎪⎭⎫⎝⎛=(1)、(2) n=-3:8; a=1/2;x=a.^n.*uDT(n); subplot(221);stem(n,x,'fill','r'),xlabel('n'),grid on title('(1)x(n)=(1/2)^{n}*U(n)') axis([-3 8 -0.1 1.1]) n1=-3:8; b=2;x=b.^n1.*uDT(n1); subplot(222);stem(n1,x,'fill','r'),xlabel('n'),grid on title('(2)x(n)=(2)^{n}*U(n)') axis([-3 4.5 -1.5 18])分析:(1)该信号为指数衰减序列与阶跃序的乘积,当n<0时,U(n)=0,所以该信号为零;当n=0时,U(n)=1,n⎪⎭⎫⎝⎛21=1,该信号为1;当n>0,U(n)=1,该信号呈现指数衰减趋势。
翻转(x[k] →x[-k])位移(x[k] →x[k±n])内插与抽取序列相加序列相乘差分与求和x [k -n ]表示将x [k ]右移n 个单位。
x [k +n ]表示将x [k ]左移n 个单位。
[]}[{][2=∇∇=∇k x k x k x []}[{][2k x k x k x ==∆∆∆]}[{][1k x k x n n-∇∇=∇]}[{][1k x k x n n-=∆∆∆]1[][][--=∇k x k x k x ][]1[][k x k x k x -+=∆单位脉冲序列可用单位阶跃序列]1[][][--=k u k u k δ1.信号分解为直流分量与交流分量2.信号分解为奇分量与偶分量之和3.信号分解为实部分量与虚部分量4.连续信号分解为冲激函数的线性组合5.离散序列分解为脉冲序列的线性组合)()()(AC DC t x t x t x +=⎰-=bat t x a b t x d )(1)(DC ][][][AC DC k x k x k x +=∑=+-=21][11][12DC N N k k x N N k x 连续时间信号离散时间信号直流交流)()()(AC DC t x t x t x +=)()()(o e t x t x t x +=)]()([21)(e t x t x t x -+=)]()([21)(o t x t x t x --=)()(e e t x t x -=)()(o o t x t x --=][][][o e k x k x k x +=]}[][{21][e k x k x k x -+=[][{21][o k x k x k x --= 离散时间信号偶分量奇分量解:-)∆u +ττδτd )()()(-=⎰∞∞-t x tx物理意义:不同的连续信号都可以分解为冲激信号,不同的信号只是它们的系数不同。
实际应用:当求解信号通过系统产生的响应时,只需求解冲激信号通过该系统产生的响应,然后利用线性时不变系统的特性,进行迭加和延时即可求得信号x (t )产生的响应。
实验一离散时间信号的表示与运算实验一:离散时间信号的表示与运算一、实验目的本实验旨在让学生了解和掌握离散时间信号的基本表示方法,包括时域和频域表示方法,以及基本信号的运算方法,从而为学生进一步学习数字信号处理和通信系统等课程打下坚实的基础。
二、实验原理离散时间信号是在时间轴上离散出现的信号,与连续时间信号不同,它只能在离散的时间点上采样观察。
离散时间信号的表示方法包括时域和频域表示方法,其中时域表示方法是最基本和直观的表示方法。
离散时间信号的运算包括加法、减法、乘法和除法等基本运算,通过这些基本运算可以实现对离散时间信号的基本处理。
此外,离散时间信号的变换也成为频域分析,将信号从时域转化为频域,可以对信号的频率特性进行分析。
三、实验步骤1.准备阶段:在进行实验之前,需要准备好实验所需的器材和软件,包括计算机、信号发生器和数字示波器等。
同时,学生应该对离散时间信号的基本概念和表示方法进行预习,以便更好地进行实验。
2.时域表示:首先,通过计算机生成一组离散时间信号,例如矩形波信号、正弦波信号和余弦波信号等。
然后,将所生成的离散时间信号在数字示波器中进行观察和记录,并对这些信号进行简单的处理,例如加减乘除等基本运算。
3.频域表示:通过使用离散傅里叶变换(DFT)将所生成的离散时间信号从时域转化到频域,并对信号的频谱进行分析。
通过观察信号的频谱,可以了解信号的频率成分和幅度分布等情况。
4.实验总结:在完成实验观察和记录后,学生应该对实验结果进行分析和总结,并对实验过程中遇到的问题进行思考和解决。
同时,学生应该了解并掌握离散时间信号的表示与运算的基本原理和方法。
四、实验结果及分析通过本次实验,学生应该得到以下实验结果:1.了解并掌握离散时间信号的基本概念和表示方法;2.学会使用简单的离散时间信号处理算法对信号进行处理;3.掌握将离散时间信号从时域转化为频域的方法,并对信号的频谱进行分析;4.学会使用MATLAB等软件对离散时间信号进行处理和分析。
第2章 离散时间信号的表示及运算2.1 实验目的● 学会运用MATLAB 表示的常用离散时间信号;● 学会运用MATLAB 实现离散时间信号的基本运算。
2.2 实验原理及实例分析2.2.1 离散时间信号在MATLAB 中的表示离散时间信号是指在离散时刻才有定义的信号,简称离散信号,或者序列。
离散序列通常用)(n x 来表示,自变量必须是整数。
离散时间信号的波形绘制在MATLAB 中一般用stem 函数。
stem 函数的基本用法和plot 函数一样,它绘制的波形图的每个样本点上有一个小圆圈,默认是空心的。
如果要实心,需使用参数“fill ”、“filled ”,或者参数“.”。
由于MATLAB 中矩阵元素的个数有限,所以MATLAB 只能表示一定时间范围内有限长度的序列;而对于无限序列,也只能在一定时间范围内表示出来。
类似于连续时间信号,离散时间信号也有一些典型的离散时间信号。
1. 单位取样序列单位取样序列)(n δ,也称为单位冲激序列,定义为)0()0(01)(≠=⎩⎨⎧=n n n δ (12-1)要注意,单位冲激序列不是单位冲激函数的简单离散抽样,它在n =0处是取确定的值1。
在MATLAB 中,冲激序列可以通过编写以下的impDT .m 文件来实现,即function y=impDT(n)y=(n==0); %当参数为0时冲激为1,否则为0调用该函数时n 必须为整数或整数向量。
【实例2-1】 利用MATLAB 的impDT 函数绘出单位冲激序列的波形图。
解:MATLAB 源程序为>>n=-3:3;>>x=impDT(n);>>stem(n,x,'fill'),xlabel('n'),grid on>>title('单位冲激序列')>>axis([-3 3 -0.1 1.1])程序运行结果如图12-1所示。
离散时间信号表与运算
————————————————————————————————作者:————————————————————————————————日期:
实验一 离散时间信号的表示与运算
一 实验目的
1、熟悉MATLAB 的绘图函数;
2、掌握单位取样序列、单位阶跃序列、矩形序列和正余弦序列的产生方法;
3、掌握离散时间信号基本运算的MATLAB 实现;
4、掌握离散时间信号线性卷积和运算的MATLAB 实现。
二 实验设备
1、计算机
2、MA TLAB R2007a 仿真软件
三 实验原理
1)序列相加和相乘
设有序列)(1n x 和)(2n x ,它们相加和相乘如下:
)
()()()()()(2121n x n x n x n x n x n x ⋅=+=
注意,序列相加(相乘)是对应序列值之间的相加(相乘),因此参加运算的两个序列必须具有相同的长度,并且保证位置相对应。
如果不相同,在运算前应采用zeros 函数将序列左右补零使其长度相等并且位置相对应。
在MATLAB 中,设序列用x1和x2表示,序列相加的语句为:x=x1+x2;然而要注意,序列相乘不能直接用x=x1*x2,该式表示两个矩阵的相乘,而不是对应项的相乘。
对应项之间相乘的实现形式是点乘“.*”,实现语句为:x=x1.*x2。
2)序列翻转
设有序列:)()(n x n y -=,在翻转运算中,序列的每个值以n=0为中心进行翻转,需要注意的是翻转过程中序列的样值向量翻转的同时,位置向量翻转并取反。
MATLAB 中,翻转运算用fliplr 函数实现。
设序列)(n x 用样值向量x 和位置向量nx 表述,翻转后的序列
)(n y 用样值向量y 和位置向量ny 描述。
3)序列的移位
移位序列)(n x 的移位序列可表示为:)()(0n n x n y -=,其中,00>n 时代表序列右移
0n 个单位;00<n 时代表序列左移0n 个单位。
在移位过程中,序列值未发生任何变化,只
是位置向量的增减。
MA TLAB 中没有固定函数实现移位运算。
设序列)(n x 用样值向量x 和位置向量nx 描述移位0n 后的序列)(n y 用样值向量y 和位置向量ny 描述。
4)序列的线性卷积和
线性卷积和运算是离散时间信号的一种重要运算,两个有限长序列的线性卷积可以用conv 函数实现。
设x(n)和y(n)分别用样值向量x 和y 表示,线性卷积g(n)用样值向量g 表示,则调用方式为),(y x conv g =,conv 函数并未考虑到位置向量,默认所有的序列都从n=0开始。
如果把位置向量考虑在内,则需要对位置向量作额外处理。
设x(n)和y(n)的位置向量分别是nx:[ns1,nf1]和ny:[ns2,nf2]表示,线性卷积的位置向量用ng:[ns3,nf3]表示。
四 实验内容
1、上机实验前,认真阅读实验原理,掌握离散时间信号表示和运算的方法;
2、掌握离散时间信号表示及运算的MATLAB 实现。
实例1:产生单位采样序列)(n δ
在MATLAB 中,函数zeros(1,N)产生一个N 个令的列向量,利用它可以实现在有限的区间上的单位采样序列。
按照前面所述的方法,将下列文件输入到Command Window 窗口中。
n=0:49; %定义横轴坐标
x=zeros(1,50); %matlab 中数组下标从1开始 x(1)=1;
stem(n,x); %绘制离散序列数据 title('单位采用信号序列')
按回车键,将产生如下图所示的序列。
实例2:产生单位阶跃序列)(n u
在MATLAB 中,函数ones(1,N)产生一个N 个1的行向量,利用它可以实现在有限区间上的单位阶跃序列。
按照前面所述方法,将下列指令编辑到“exlstep.m ”文件中。
n=0:49; %定义横轴坐标
x=ones(1,50); %matlab 中数组下标从1开始 x(1)=1;
stem(n,x); %绘制离散序列数据 title('单位阶跃信号序列'3
文件编辑后保存,然后单击Debug →Run ,运行“exlstep.m ”,将产生如下图所示序列。
实例3:产生矩形阶跃序列)(R N n
其他
1n 00
1n)(R N
-≤≤⎩⎨⎧=N 在MATLAB 中,函数sign(x)产生在x 大于0时其值为1;在等于0时其值为0,在x 小于0时其值为-1。
利用它可以实现窗长度为N 的矩形序列。
按照前面所述方法,将下列指令编辑到“exlrectang.m ”文件中。
N=10;
n=0:49; %定义横轴坐标 x=sign(sign(N-1-n)+1);
stem(n,x); %绘制离散序列数据
title('矩形序列')
文件编辑后保存,然后单击Debug →Run ,运行“exlrectang.m ”,将产生如下图所示序列。
实例4:产生正弦和余弦序列
+∞<≤∞-=n n A n x )sin()(ω +∞
<≤∞-=n n A n y )
(cos )(ω
将下列指令编辑到“exlsincos.m ”文件中。
N=50; %采样50个点
A=1; %正余弦波的幅值为1 f=50; %信号频率为50Hz fs=500; %采样频率为500Hz n=0:N-1;
x=A*sin(2*pi*f*n/fs); %获得采样点的值 y=A*cos(2*pi*f*n/fs);
subplot(1,2,1); %子图分割函数,参数一表示列,参数二表示行, stem(n,x); %参数三表示绘图序号
title('正弦序列') subplot(1,2,2); stem(n,y);
title('余弦序列')
文件编辑后保存,然后单击Debug →Run ,运行“exlsincos.m ”,将产生如下图所示序列。
实例5:已知两个离散序列⎭
⎬⎫⎩
⎨⎧---==↑
3,2,1,0,1,2,3)(0
1
k k f ,⎭
⎬⎫⎩
⎨⎧--==↑
2,1,0,1,2)(0
2k k f ,用MATLAB 绘出)()()(21k f k f k f +=的波形。
源程序如下:
a1=[-3,-2,-1,0,1,2,3];
k1=-3:3;
a2=[-2,-1,0,1,2]; k2=-2:2;
k=min([k1:k2]):max([k1,k2]); f1=zeros(1,length(k)); f2=zeros(1,length(k));
f1(find((k>=min(k1))&(k<=max(k1))==1))=a1; f2(find((k>=min(k2))&(k<=max(k2))==1))=a2; f=f1+f2;
stem(k,f,'filled'); 运行结果如下图所示。
实例6:已知离散序列k
k f 32)(⋅=,利用MATLAB 绘出其翻转信号,源程序如下: k1=-3:3; f1=2*3.^k; f=fliplr(f1); k=-fliplr(k1); stem(k,f);
运行结果如下图所示。
实例7: 已知离散信号{}3,2,1,0,1,2,3)(---=k f ,利用MA TLAB 绘出)3(+k f 波形,源程序波形如下:
a0=[-3,-2,-1,0,1,2,3]; k0=-3:3; k1=3; k=k0+k1; f=a0;
stem(k,f,'filled'); 运行结果如下图所示。
实例8:已知两个离散序列⎭
⎬⎫⎩⎨⎧==↑3,3,3,1)(0
1
k k f ,⎭⎬⎫⎩⎨⎧==↑4,3,3,2,1)(0
2k k f ,利用MATLAB 绘出原信号及其卷积)(*)()(21k f k f k f =,源程序如下:
f1=[1,3,3,3];
k1=0:3;
f2=[1,2,3,3,4];
k2=0:4;
f=conv(f1,f2);
subplot(3,1,1);
stem(k1,f1);
ylabel('f1(k)');
subplot(3,1,2);
stem(k2,f2);
ylabel('f2(k)');
subplot(3,1,3);
stem(0:length(f)-1,f);
xlabel('k');
ylabel('f(k)');
运行结果如下图所示。
五实验报告要求
1、简述实验目的和实验原理;
2、编程实现实验内容,要求附上详细的源程序和清晰的截图;
3、总结实验中的主要结论。