用MATL新编实现常用的离散时间信号及其时域运算
- 格式:docx
- 大小:66.34 KB
- 文档页数:8
Matlab离散信号时域分析实验报告1. 引言信号是信息的载体,可以通过对信号进行离散化来进行数字信号的处理和分析。
离散信号时域分析是对离散信号在时域上进行观察和分析的方法。
本实验旨在通过使用Matlab软件对离散信号进行时域分析,掌握离散信号的时域特性和基本分析方法。
2. 实验目的•了解离散信号的概念和特性;•掌握离散信号的时域分析方法;•学会通过Matlab对离散信号进行时域分析。
3. 实验原理离散信号是在时间上呈现离散的特征,可以用离散序列表示。
离散序列可以通过采样连续信号得到,也可以通过数学模型生成。
在时域分析中,通常使用的分析方法包括: - 时域图像绘制:绘制离散信号的时域图像,了解信号的振幅和波形特征; - 时域序列计算:计算离散信号的均值、方差等统计量,了解信号的基本特性;- 时域滤波:对离散信号进行滤波,去除噪声或者突发干扰。
4. 实验步骤4.1 生成离散信号首先需要生成一个离散信号序列,可以使用Matlab的随机数函数生成一个大小为N的随机序列作为离散信号。
N = 100; % 信号长度为100x = rand(1,N); % 生成随机序列4.2 时域图像绘制通过plot函数可以将离散信号在时域上绘制出来,观察信号的振幅和波形特征。
t = 1:N; % 时间序列plot(t, x);title('离散信号时域图像');xlabel('时间');ylabel('幅度');4.3 时域序列计算可以通过内置函数计算离散信号的均值、方差等统计量。
avg = mean(x); % 均值variance = var(x); % 方差4.4 时域滤波可以使用滤波器对离散信号进行滤波,去除噪声或者突发干扰。
这里以均值滤波为例,对信号进行平滑处理。
windowSize = 5; % 滑动窗口大小b = (1/windowSize)*ones(1,windowSize);a = 1;smoothed_x = filter(b, a, x);5. 实验结果与分析通过对生成的离散信号进行时域分析,得到如下结果: - 时域图像:时域图像时域图像•信号均值:0.5231•信号方差:0.0842•平滑后的信号时域图像:平滑后的时域图像平滑后的时域图像从时域图像可以观察到信号的振幅和波形特征。
1. 单位抽样序列,或称为离散时间冲激,单位冲激:⎩⎨⎧=01)(n δ 00≠=n n 如果)(n δ在时间轴上延迟了k 个单位,得到)(k n -δ即:⎩⎨⎧=-01)(k n δ0≠=n k n 2.单位阶跃序列⎩⎨⎧01)(n u 00<≥n n 在MATLAB 中可以利用ones( )函数实现。
);,1(N ones x =3.正弦序列)(cos )(0φω+=n A n x 这里,,,0ωA 和φ都是实数,它们分别称为本正弦信号)(n x 的振幅,角频率和初始相位。
πω200=f 为频率。
4.复正弦序列 n j e n x ω=)(5.实指数序列n A n x α=)(6. 随机序列长度为N 的随机序列基本数学函数参考教材P69页以及随后的使用说明。
注意使用行向量,特别是冒号运算符。
举例,长度为N 的实指数序列在MATLAB 中实现:n a x N n .^1:0=-=1. 单位采样长度为N 的单位采样序列u(n)可以通过下面的MATLAB 命令获得:u=[1 )1,1(-N zeros ];延迟M 个采样点的长度为N 的单位采样序列ud(n)(M<N)可以用下面命令获得:ud=[),1(M zeros 1 )1,1(--M N zeros ];2. 单位阶跃序列长度为N 的单位阶跃序列s(n)可以用下面的MATLAB 命令获得:)];,1([N ones s =延迟的单位阶跃序列可以使用类似于单位采样序列的方法获得。
3. 正弦序列长度为N 的正弦序列在MATLAB 中实现:)/***2cos(*1:0phase Fs n f pi A x N n +=-=4. 指数序列长度为N 的指数序列在MATLAB 中实现:)**exp(1:0n j x N n ω=-=5. 实指数序列长度为N 的实指数序列在MATLAB 中实现:n a x N n .^1:0=-=6. 随机序列长度为N 的随机序列在MATLAB 中实现:);,1(N rand x =。
离散时间信号的时域分析实验报告实验报告:离散时间信号的时域分析一、实验目的本实验旨在通过MATLAB软件,对离散时间信号进行时域分析,包括信号的显示、基本运算(如加法、减法、乘法、反转等)、以及频域变换(如傅里叶变换)等,以加深对离散时间信号处理的基本概念和原理的理解。
二、实验原理离散时间信号是在时间轴上离散分布的信号,其数学表示为离散时间函数。
与连续时间信号不同,离散时间信号只能在特定的时间点取值。
离散时间信号的时域分析是研究信号的基本属性,包括幅度、时间、频率等。
通过时域分析,我们可以对信号进行各种基本运算和变换,以提取有用的信息。
三、实验步骤1.信号生成:首先,我们使用MATLAB生成两组简单的离散时间信号,一组为正弦波,另一组为方波。
我们将这些信号存储在数组中,以便后续分析和显示。
2.信号显示:利用MATLAB的绘图功能,将生成的信号在时域中显示出来。
这样,我们可以直观地观察信号的基本属性,包括幅度和时间关系。
3.基本运算:对生成的信号进行基本运算,包括加法、减法、乘法、反转等。
将这些运算的结果存储在新的数组中,并绘制出运算后的信号波形。
4.傅里叶变换:使用MATLAB的FFT(快速傅里叶变换)函数,将信号从时域变换到频域。
我们可以得到信号的频谱,进而分析信号的频率属性。
5.结果分析:对上述步骤得到的结果进行分析,包括比较基本运算前后的信号波形变化,以及傅里叶变换前后的频谱差异等。
四、实验结果1.信号显示:通过绘制图形,我们观察到正弦波和方波在时域中的波形特点。
正弦波呈现周期性的波形,方波则呈现明显的阶跃特性。
2.基本运算:通过对比基本运算前后的信号波形图,我们可以观察到信号经过加法、减法、乘法、反转等运算后,其波形发生相应的变化。
例如,两个信号相加后,其幅度和时间与原信号不同。
反转信号则使得波形在时间轴上反向。
3.傅里叶变换:通过FFT变换,我们将时域中的正弦波和方波转换到频域。
正弦波的频谱显示其频率为单一的直流分量,方波的频谱则显示其主要频率分量是直流分量和若干奇数倍的谐波分量。
使用matlab来实现时域离散信号的产生实验心得【标题】使用Matlab实现时域离散信号的产生实验心得【导语】在信号与系统课程的学习中,时域离散信号的产生是一个重要的实验内容。
本文将结合个人实验经验,探讨如何使用Matlab来实现时域离散信号的产生,以及实验心得体会。
【主体内容】一、时域离散信号的概念时域离散信号是指信号在时域上是离散的,其取样时间是离散的。
与连续信号相对应,离散信号具有一些独特的特性和处理方法。
在实际应用中,我们经常需要生成各种形式的时域离散信号,用于系统模拟、滤波器设计等方面。
二、Matlab在时域离散信号产生中的应用1. 生成简单的离散信号在Matlab中,可以利用基本的数学函数和操作符来生成简单的离散信号。
可以利用sin、cos等函数来生成正弦信号、余弦信号,利用随机数函数来生成随机信号等。
Matlab还提供了丰富的绘图函数,可以直观地展示生成的离散信号。
2. 生成复杂的离散信号除了基本的数学函数外,Matlab还提供了丰富的信号处理工具箱,可以用于生成各种复杂的离散信号。
可以利用波形合成函数生成有限长序列、周期序列等特殊形式的信号;还可以利用滤波器设计函数生成特定频率特性的信号等。
三、实验心得与体会在实验中,我深切体会到Matlab在时域离散信号生成方面的强大功能和便捷性。
通过Matlab,我能够快速生成各种形式的离散信号,并对其进行分析、处理和展示。
Matlab的直观、交互式界面也使得实验过程更加高效和愉悦。
在实践中,我也发现了一些问题和经验总结。
在生成复杂离散信号时,需要深入理解各种信号处理工具箱的使用方法,以及不同函数的参数设置;在展示离散信号时,需要注意选择合适的绘图方式,清晰地展现信号的特点和规律。
【总结与回顾】本文通过介绍时域离散信号的概念和Matlab在信号生成中的应用,共享了个人的实验心得和体会。
希望能够对读者有所启发,开拓视野,加深对时域离散信号的理解和掌握。
实验一:用MA TLAB 产生时域离散信号一、实验目的1、了解常用时域离散信号及其特点2、掌握用MATLAB 产生时域离散信号的方法二、实验内容及步骤1、编写程序,产生以下离散序列: (1)f (n )=δ(n ) (-3<n<4) n1=-3;n2=4;n0=0;n=n1:n2; x=[n==n0]; stem (n ,x,'filled’); axis([n1,n2,0,1。
1*max(x)]);xlabel(’时间(n)');ylabel(’幅度x (n )'); title ('单位脉冲序列’);时间(n)幅度x (n )单位脉冲序列(2)f (n )=u (n) (—5<n 〈5)n1=-5;n2=5;n0=0; n=n1:n2;x=[n>=n0]; stem(n ,x ,’filled’);axis ([n1,n2,0,1.1*max (x)]); xlabel('时间(n )');ylabel ('幅度x(n)’); title ('单位阶跃序列’); box时间(n)幅度x (n )单位阶跃序列(3)f (n )= e (0。
1+j1。
6∏)n (0<n 〈16)n1=16;a=0.1;w=1。
6*pi; n=0:n1;x=exp((a+j *w )*n );subplot (2,2,1);plot (n,real(x)); title(’复指数信号的实部');subplot (2,2,3);stem (n ,real(x ),'filled’); title (’复指数序列的实部'); subplot (2,2,2);plot(n,imag (x)); title('复指数信号的虚部');subplot (2,2,4);stem (n ,imag (x),'filled'); title (’复指数序列的虚部'); box5101520-4-20246复指数信号的实部05101520复指数序列的实部5101520-6-4-2024复指数信号的虚部05101520复指数序列的虚部(4)f (n)=3sin (nП/4) (0〈n 〈20)f=1/8;Um=3;nt=3; N=20;T=1/f ; dt=T/N; n=0:nt*N-1; tn=n *dt;x=Um*sin (2*f*pi*tn ); subplot (2,1,1);plot (tn,x);axis([0,nt *T ,1.1*min (x),1。
实验四用M A T L A B实现常用的离散时间信号及其时域运算——摘要:在MATLAB中,只能用向量来表示离散时间信号。
与连续信号不同,离散时间信号无法用符号运算来表示。
用适当的MATLAB语句表示出信号后,就可以利用MATLAB 的绘图命令stem来绘出直观的信号波形图,stem是专门用于绘制离散时间信号的。
在MATLAB中离散序列的时域运算和变换不能用符号运算来实现,而必须用向量表示的方法,即在MATLAB中离散序列的相加、相乘需表示成两个向量的相加、相乘,因而参加运算的两序列向量必须有相同的维数。
一、实验目的:(1)学习MATLAB语言及其常用指令;(2)学习和掌握用MATLAB语言产生离散时间信号的编程方法;(3)通过编程绘制出离散时间信号的波形,加深理解信号的时域运算。
二、实验内容:(1)运用MATLAB的绘图指令绘制离散时间信号;(2)用MATLAB语言实现离散时间信号的时域运算。
三、实验原理:(1)单位阶跃序列和单位样值序列。
离散时间信号只在某些离散的瞬时给出信号的值,因此,它是时间上不连续的序列。
单位阶跃序列和单位样值序列在离散时间信号与系统的分析中是两个非常典型的序列,分别记为u(n)和δ(n)。
它们的定义分别如下:1 n≥0 1 n≥0u(n)= δ(n)=0 n<0 0 n≠0若单位阶跃序列的起始点为n0,单位样值序列出现在n0时刻,则表达式分别为:1 n≥n0 1 n=n0u(n-n0)= δ(n-n0)=0 n<n0 0 n≠n0应注意,离散时间的单位阶跃序列与连续时间的单位阶跃信号的异同,以及离散时间的单位样值序列与连续时间的单位冲激信号的异同。
(2)离散时间信号的时域运算。
与连续时间系统的研究类似,在离散系统分析中,经常遇到离散时间信号的运算,包括两信号的相加、相乘以及序列自身的移位、反褶、尺度等等,也需要了解在运算过程中序列的表达式以及对应的波形的变化。
MATLAB在离散信号时域变换与运算中的应用与实现院系:信息学院信息与电子科学系姓名:xx学号:专业:电子信息科学与技术指导老师:XX摘要“信号与系统”课程是一门实用性较强、涉及面较广的专业基础性课程,是电子信息类专业本科学生的必修课程,也是电子信息类专业硕士研究生入学必考的课程。
该课程是将学生从电路分析的知识领域引入信号处理与传输领域的关键性课程,对后续专业课起着承上启下的作用。
该课程的基本方法和理论大量应用于计算机信息处理的各个领域,特别是通信、数字语音处理、数字图像处理、数字信号分析等领域,应用更为广泛。
因此,该课程具有重要的意义。
长期以来,“信号与系统”课程一直采用黑板式的单一教学方式,学生仅依靠做习题来巩固和理解教学内容,对课程中大量的应用性较强的内容不能实际动手设计、调试、分析,严重影响和制约了教学效果。
由于黑板式教学,课程中大量信号分析结果缺乏可视化的直观表现,学生将大量的精力和时间用于繁杂的手工数学运算,而未真正理解所得到的结果。
因此,为了把学生从繁琐的数学运算中解脱出来,从而将更多的时间用于对信号与线性系统的基本分析方法和应用的理解与思考。
该课程急需进行教学方法的改革,即实现在实验环境中,以计算机为辅助教学手段,用信号分析的软件帮助学生完成数值计算、信号与系统分析的可视化建模及仿真调试。
Mathworks公司推出的MATLAB开发平台经过十多年的发展,已经成为科技界最流行的应用软件,它具有高效率的数值计算及符号计算功能、完备的图形处理功能、友好的用户界面及接近数学表达式的自然化语言和功能丰富的应用工具箱。
由于MATLAB具有上述特点,为开发“信号与系统”计算机辅助教学(CAI)软件提供了强有力的工具。
本论文详细介绍了基于MATLAB 6.5 实现的离散序列时域变换与运算演示程序的设计与实现过程,该程序用直观、形象的二维曲线,展示了离散序列时域运算与变换的实现过程和规律,有效地弥补了课堂上黑板教学的不足。
实验十一 离散信号时域分析的MATLAB 实现一、实验目的1. 熟悉MATLAB 编程方法、常用语句和可视化绘图技术;2. 掌握序列时域运算的MATLAB 编程方法。
3. 掌握离散信号时域分析的MATLAB 方法。
二、实验原理1.离散时间系统LTI 离散系统中,其输入和输出的关系由差分方程描述:00()()n mi ji j a y k i bf k j ==+=+∑∑ (前向差分方程)()()nmi ji j a y k i bf k n j ==-=-+∑∑ (后向差分方程)当系统的输入为单位序列δ(k )时产生的零状态响应称为系统的单位函数响应,用h (k )表示。
当输入为 ε(k )时产生的零状态响应称为系统的单位阶跃应,记为:g (k ),如下图所示。
如果系统输入为e (k ),冲激响应为h (k ),系统的零状态响应为y(k ),则有:()()()y k h k f k =*。
与连续系统的单位冲激响应h (t )相类似,离散系统的单位函数响应h (k )也包含了系统的固有特性,与输入序列无关。
我们只要知道了系统的单位函数响应,即可求得系统在不同激励信号作用下产生的响应。
因此,求解系统的单位函数响应h (k )对我们进行离散系统的分析也同样具有非常重要的意义。
MATLAB 中为用户提供了专门用于求解离散系统单位函数响应, 并绘制其时域波形的函数impz( )。
同样也提供了求离散系统响应的专用函数filter( ),该函数能求出由差分方程所描述的离散系统在指定时间范围内的输入序列作用时,产生的响应序列的数值解。
当系统初值不为零时,可以使用dlsim( )函数求出离散系统的全响应,其调用方法与前面连续系统的lsim( )函数相似。
另外,求解离散系统阶跃响应可以通过如下两种方法实现:一种是直接调用专用函数dstep( ),其调用方法与求解连续系统阶跃响应的专用函数step( )的调用方法相似;另一种方法是利用求解离散系统零状态响应的专用函数filter( ),只要将其中的激励信号看成是单位阶跃信号ε(k )即可。
实验2 时域离散信号的产生(完美格式版,本人自己完成,所有语句正确,不排除极个别错误,特别适用于山大,勿用冰点等工具下载,否则下载之后的word格式会让很多部分格式错误,谢谢)XXXX学号姓名处XXXX一、实验目的(1)了解常用的时域离散信号及其特点。
(2)掌握MATLAB产生常用时域离散信号的方法。
二、实验内容(2) 编写程序,产生下列离散序列:①f(n)=δ(n) (-3<n<4)②f(n)=u(n) (-5<n<5)③f(n)=e(0.1+j1.6π)n(0<n<16)④f(n)=3sin(nπ/4) (0<n<20)⑤f(n)=sin(n/5)/ (n/5) (-20<n<20)(3) 一个连续的周期性三角波信号频率为50Hz,信号幅度在0~+2V之间,在窗口上显示2个周期信号波形,对信号的一个周期进行16点采样来获取离散信号。
试显示原连续信号和采样获得的离散信号波形。
(4) 一个连续的周期性方波信号频率为200Hz,信号幅度在-1~+1V之间,在窗口上显示2个周期信号波形,用Fs=4kHz的频率对连续信号进行采样,试显示原连续信号和采样获得的离散信号波形。
三、实验环境MA TLAB7.0四、实验原理用matlab进行程序设计,利用matlab绘图十分方便,它既可以绘制各种图形,包括二维图形和三位图形,还可以对图像进行装饰和控制。
五、实验过程(步骤、结果、分析)(2)①在matlab命令窗口中逐行输入下列语句>> n1=-3;n2=4;n0=0; %在起点n1、终点n2的范围内,于n0处产生冲激>> n=n1:n2; %生成离散信号的时间序列>> x=[n==n0]; %生成离散信号x(n)>> stem(n,x,'filled'); %绘制杆状图,且圆心处用实心圆表示>> title('单位脉冲序列');>> xlabel('时间(n)');ylabel('幅度x(n)');在上述语句输入完成之后,敲击回车键,弹出图形窗口,显示出如下图形,即已经满足题干所述条件,产生了 f(n)=δ(n),(-3<n<4) 的离散序列-3-2-1012340.20.40.60.81时间(n )幅度x (n )单位脉冲序列(2) ② 在matlab 命令窗口中逐行输入下列语句>> n1=-5;n2=5;n0=0;>> n=n1:n2;>> x=[n>=n0];>> stem(n,x,'filled');>> axis([n1,n2,0,1.1*max(x)]); %限定横坐标个纵坐标的显示范围>> title('单位阶跃序列');>> xlabel('时间(n )');ylabel('幅度x (n )');在上述语句输入完成之后,敲击回车键,弹出图形窗口,显示出如下图形,即已经满足题干所述条件,产生了f(n)=u(n),(-5<n<5)的离散序列单位阶跃序列时间(n )幅度x (n )(2) ③在matlab命令窗口中逐行输入下列语句>> n1=16;a=0.1;w=1.6*pi;>> n=0:n1;>> x=exp((a+j*w)*n);>>subplot(2,1,1),stem(n,real(x)); %在指定位置描绘图像>> title('复指数序列的实部');>> subplot(2,1,2),stem(n,imag(x));>> title('复指数序列的虚部');在上述语句输入完成之后,敲击回车键,弹出图形窗口,显示出如下图形,即已经满足题干所述条件,产生了f(n)=e(0.1+j1.6π)n,(0<n<16)的离散序列复指数序列的实部复指数序列的虚部0246810121416(2) ④在matlab命令窗口中逐行输入下列语句>> Um=3;nt=20;>> n=0:nt;>> f=Um*sin(pi/4*n);>> stem(n,f);在上述语句输入完成之后,敲击回车键,弹出图形窗口,显示出如下图形,即已经满足题干所述条件,产生了f(n)=3sin(nπ/4),(0<n<20)的离散序列321-1-2-3(2) ⑤在matlab命令窗口中逐行输入下列语句>> n=-20:20;>> f=sinc(n/5);>> stem(n,f);在上述语句输入完成之后,敲击回车键,弹出图形窗口,显示出如下图形,即已经满足题干所述条件,产生了f(n)=sin(n/5)/ (n/5),(-20<n<20)的离散序列(3)在matlab命令窗口中逐行输入下列语句>> f=50;Um=1;nt=2; %输入信号频率、振幅、显示周期>> N=16;T=1/f; %N为信号一个采样周期的采样点数,T为信号周期>> dt=T/N; %采样时间间隔>> n=0:nt*N-1; %建立离散时间的时间序列>> tn=n*dt; %确定时间序列样点在时间轴上的位置>> f=Um*sawtooth(2*f*pi*tn)+1;>> subplot(2,1,1),stem(tn,f); %显示经采样的信号>> title('离散信号');>> subplot(2,1,2),plot(tn,f); %显示原连续信号>> title('连续信号');在上述语句输入完成之后,敲击回车键,弹出图形窗口,显示出如下图形,即已经满足题干所述条件,显示了原连续信号和采样获得的离散信号波形离散信号连续信号(4)在matlab命令窗口中逐行输入下列语句>> f=200;Um=1;nt=2; %输入信号频率、振幅、显示周期>> Fs=4000;N=Fs/f;T=1/f; %输入采样频率、求采样点数N、T为信号周期>> dt=T/N; %采样时间间隔>> n=0:nt*N-1; %建立离散时间的时间序列>> tn=n*dt; %确定时间序列样点在时间轴上的位置>> f=Um*sin(2*f*pi*tn);>> subplot(2,1,2),plot(tn,f); %显示原连续信号>> title('连续信号');>> subplot(2,1,1),stem(tn,f); %显示经采样的信号>> title('离散信号');在上述语句输入完成之后,敲击回车键,弹出图形窗口,显示出如下图形,即已经满足题干所述条件,显示了原连续信号和采样获得的离散信号波形六、实验感想通过此次实验中练习使用matlab 产生时域离散信号,更为熟悉的掌握了matlab 的功能,在实验过程中也遇到很多小问题,并通过仔细检查和查阅相关书籍解决此类问题,让我深刻认识到,细节的重要性00.0010.0020.0030.0040.0050.0060.0070.0080.0090.01-11连续信号。
用M A T L新编实现常用的离散时间信号及其
时域运算
公司内部编号:(GOOD-TMMT-MMUT-UUPTY-UUYY-DTTI-
实验四用MATLAB实现常用的离散时间信号及其时域运算
——
摘要:在MATLAB中,只能用向量来表示离散时间信号。
与连续信号不同,离散时
间信号无法用符号运算来表示。
用适当的MATLAB语句表示出信号后,就可以利用MATLAB的绘图命令stem来绘出直观的信号波形图,stem是专门用于绘制离散时
间信号的。
在MATLAB中离散序列的时域运算和变换不能用符号运算来实现,而必
须用向量表示的方法,即在MATLAB中离散序列的相加、相乘需表示成两个向量的
相加、相乘,因而参加运算的两序列向量必须有相同的维数。
一、实验目的:(1)学习MATLAB语言及其常用指令;
(2)学习和掌握用MATLAB语言产生离散时间信号的编程方法;
(3)通过编程绘制出离散时间信号的波形,加深理解信号的时域运
算。
二、实验内容:(1)运用MATLAB的绘图指令绘制离散时间信号;
(2)用MATLAB语言实现离散时间信号的时域运算。
三、实验原理:(1)单位阶跃序列和单位样值序列。
离散时间信号只在某些离散的瞬时给出信号的值,因此,它是时间上不连续的
序列。
单位阶跃序列和单位样值序列在离散时间信号与系统的分析中是两个非
常典型的序列,分别记为u(n)和δ(n)。
它们的定义分别如下:
1 n≥0 1 n≥0
u(n)= δ(n)=
0 n<0 0 n≠0
若单位阶跃序列的起始点为n0,单位样值序列出现在n0时刻,则表达式分别为:
1 n≥n0 1 n=n0
u(n-n0)= δ(n-n0)=
0 n<n0 0 n≠n0
应注意,离散时间的单位阶跃序列与连续时间的单位阶跃信号的异同,以及离散时间的单位样值序列与连续时间的单位冲激信号的异同。
(2)离散时间信号的时域运算。
与连续时间系统的研究类似,在离散系统分析中,经常遇到离散时间信号的运算,包括两信号的相加、相乘以及序列自身的移位、反褶、尺度等等,也需要了解在运算过程中序列的表达式以及对应的波形的变化。
序列x(n)的移位:x(n-n0)
序列x(n)的反褶:x(-n)
序列x(n)的尺度变换:x(an)
两序列x1(n)与x2(n)的相加减:x1(n) ±x2(n)
两序列与的相乘:x1(n) ·x2(n)
(3)学习如何使用MATLAB语言产生离散时间信号并对离散时间信号进行时域运算。
四、实验任务:
(1)编制用于产生下列信号的通用程序,要求对于任意给定的参数都能实现所要求的信号。
调试并运行这些通用的程序。
①x(n)=Aδ(n-n0)
程序:function un(t1,t2,t0)
t=t1:t2;
n=length(t);
tt=t1:t2;
n1=length(tt);
f=zeros(1,n);
f(1,t0-t1+1)=3;
stem(t,f),grid on
title('μ¥3÷Do')
axis([t1,t2 4])
②x(n)=A[u(n-m1)-u(n-m2)]
程序:function unn(t1,t2,A)
t=t1:t2;
n=length(t);
f=[zeros(1,t1-1),A*ones(1,t2-t1),zeros(1,1)];
stem(t,f);grid on
axis([t1 t2 4])
(2)已知离散序列波形。
①f(k-2)u(k);
u(k)可以直接调用stepseq函数,离散序列的平移编程如下:function[f,k]=lspy(ff,kk,k0)
k=kk+k0;
f=ff;
离散序列的相乘程序为:
function [f,k]=lsxc(f1,f2,k1,k2)
k=min(min(k1),min(k2)):max(max(k1),max(k2));
s1=zeros(1,length(k));s2=s1;
s1(find((k>=min(k1))&(k<=max(k1))==1))=f1;
s2(find((k>=min(k2))&(k<=max(k2))==1))=f2;
f=s1.*s2;
stem(k,f)
axis([(min(min(k1),min(k2))-
1),(max(max(k1),max(k2))+1),(min(f),(max(f)+])则该离散信号的编程如下:
m2=1;
m3=1;
m4=4;
t=t1:t2;
y1=(stepseq(m1,t1,t2)-stepseq(m2,t1,t2));
y2=(stepseq(m3,t1,t2)-stepseq(m4,t1,t2));
f=y1.*(t+3)+3*y2;
[f1,k]=lspy(f,t,2);
f2=stepseq(0,-7,7);
[f3,k1]=lsxc(f1,f2,k,t);
stem(k1,f3),grid on
title('f(k-2)*u(k)');
axis([t1 t2 -1 4])
②f(-k+2);
:t1=-7;
t2=7;
m1=-3;
m2=1;
m3=1;
m4=4;
t=t1:t2;
y1=(stepseq(m1,t1,t2)-stepseq(m2,t1,t2)); y2=(stepseq(m3,t1,t2)-stepseq(m4,t1,t2)); f=y1.*(t+3)+3*y2;
[f1,k]=lspy(f,t,2);
[f2,k1]=lsfz(f1,k);
stem(k1,f2),grid on
title('f(-k+2))');
axis([t1 t2 -1 4])
③f(k-2)u(k-2)
t1=-7;
t2=7;
m1=-3;
m2=1;
m3=1;m4=4;
t=t1:t2;
y1=(stepseq(m1,t1,t2)-stepseq(m2,t1,t2));
y2=(stepseq(m3,t1,t2)-stepseq(m4,t1,t2));
f=y1.*(t+3)+3*y2;
[f1,k]=lspy(f,t,2);
f2=stepseq(2,-7,7);
[f3,k1]=lsxc(f1,f2,k,t)
stem(k1,f3),grid on
title('f(k-2)*u(k-2)');
axis([t1 t2 -1 4])
五.思考题
程序如下:
function [f,k]=lsxc(f1,f2,k1,k2)
k=min(min(k1),min(k2)):max(max(k1),max(k2));
s1=zeros(1,length(k));s2=s1;
s1(find((k>=min(k1))&(k<=max(k1))==1))=f1;
s2(find((k>=min(k2))&(k<=max(k2))==1))=f2;
f=s1.*s2;
stem(k,f)
axis([(min(min(k1),min(k2))-
1),(max(max(k1),max(k2))+1),(min(f),(max(f)+])
六、实验总结
通过这次试验不仅了解了许多常用函数,例如相加相乘、反折、平移,还学习和掌握了用MATLAB语言产生离散时间信号的编程方法,同时加深了对离散信号时域算法的理解,受益匪浅!!!。