用MATLAB实现常用的离散时间信号及其时域运算
信号与系统实验(MATLAB 西电版)实验4 离散时间信号的时域基本运算_OK
图 4.5 序列及其平移
2021/7/3
16
实验4 离散时间信号的时域基本运算
2.
已知序列f(k)={2,3,1,2,3,4,3,1},对应的k值为 -3≤k≤4 f1(k)=f(k-2),f2(k)=f(-k),f3(k)=f(k-1)ε(k), f4(k)=f(-k+2),f5(k)=f(k+1), f6(k)=f(k-2)ε(k),f7(k)=f(k+2)ε(k)
5) MATLAB x1=-2:2; %序列1 k1=-2:2; k0=2; k=k1+k0; f=x1; stem(k,f,′filled′); axis([min(k)-1,max(k)+1,min(f)-0.5,max(f)+0.5]); 序列及其平移如图4.5
2021/7/3
15
实验4 离散时间信号的时域基本运算
2021/7/3
17
实验4 离散时间信号的时域基本运算
(1) 在计算机中输入程序,验证并记录实验结果,经过 (2) 对于设计性实验,应自行编制完整的实验程序,重复 验证性实验的过程,并在实验报告中给出完整的自编程序。
2021/7/3
18
axis([min(k)-1,max(k)+1,min(f)-0.5,max(f)+0.5]);
序列及其翻转如图4.3所示。
2021/7/3
11
实验4 离散时间信号的时域基本运算
图 4.3 序列及其翻转
2021/7/3
12
实验4 离散时间信号的时域基本运算
4)
MATLAB
x1=-2:2;
%序列1
两个序列的乘法如图4.2
2021/7/3
实验1 利用matlab进行系统的时域分析
实验1 利用matlab进行系统的时域分析一.实验目的:1.了解离散时间序列卷积与的matlab实现;2.利用卷积与求解系统的零状态响应;二.实验原理:1.连续时间系统零状态响应的求解连续时间LTI系统以常系数微分方程描述,系统的零状态响应可通过求解初始状态为零的微分方程得到。
在MATLAB中,控制系统工具箱提供了一个用于求解零初始状态微分方程数值解的函数lsim。
其调用方式为y= lsim( sys,x,t)式中t表示计算系统响应的抽样点向量,x就是系统输入信号向量,sys就是连续时间LTI系统模型,用来表示微分方程、差分方程、状态方程。
在求解微分方程时,微分方程的连续时间LTI系统模型sys要借助tf函数获得,其调用方式为sys= tf(b,a)式中b与a分别为微分方程右端与左端各项的系数向量。
例如对3阶微分方程+++=+++可用a=[ a3, a2, a1, a0];b=[b3 ,b2, b1,b0]; sys=tf( b,a)获得连续时间LTI模型。
注意微分方程中为零的系数一定要写入向量a与b中。
【例2-1】描述某力学系统中物体位移y(t)与外力f(t)的关系为++y(t)=x(t)物体质量m=l kg,弹簧的弹性系数ks= 100 N/m,物体与地面的摩擦系数fd=2 N·s/m,系统的初始储能为零,若外力x(t)就是振幅为10、周期为1的正弦信号,求物体的位移y(t)。
解:由已知条件,系统的输入信号为x(t)=10sin(2πt),系统的微分方程为++100y(t)=x(t)计算物体位移y(t)的MATLAB程序如下:%program2_1微分方程求解ts=0;te=5;dt=0、01;sys=tf([1],[1 2 100]);t=ts:dt:te;x=10*sin(2*pi*t);y=lsim(sys,x,t);plot(t,y);xlabel('Time(sec)')ylabel('y(t)')-0.25-0.2-0.15-0.1-0.0500.050.10.150.2Time(sec)y (t )图2-1系统的零状态响应2、连续时间系统冲激响应与阶跃响应的求解在MATLAB 中,求解系统冲激响应可应用控制系统工具箱提供的函数impulse,求解阶跃响应可利用函数step 。
离散时间信号的时域分析实验报告
离散时间信号的时域分析实验报告实验报告:离散时间信号的时域分析一、实验目的本实验旨在通过MATLAB软件,对离散时间信号进行时域分析,包括信号的显示、基本运算(如加法、减法、乘法、反转等)、以及频域变换(如傅里叶变换)等,以加深对离散时间信号处理的基本概念和原理的理解。
二、实验原理离散时间信号是在时间轴上离散分布的信号,其数学表示为离散时间函数。
与连续时间信号不同,离散时间信号只能在特定的时间点取值。
离散时间信号的时域分析是研究信号的基本属性,包括幅度、时间、频率等。
通过时域分析,我们可以对信号进行各种基本运算和变换,以提取有用的信息。
三、实验步骤1.信号生成:首先,我们使用MATLAB生成两组简单的离散时间信号,一组为正弦波,另一组为方波。
我们将这些信号存储在数组中,以便后续分析和显示。
2.信号显示:利用MATLAB的绘图功能,将生成的信号在时域中显示出来。
这样,我们可以直观地观察信号的基本属性,包括幅度和时间关系。
3.基本运算:对生成的信号进行基本运算,包括加法、减法、乘法、反转等。
将这些运算的结果存储在新的数组中,并绘制出运算后的信号波形。
4.傅里叶变换:使用MATLAB的FFT(快速傅里叶变换)函数,将信号从时域变换到频域。
我们可以得到信号的频谱,进而分析信号的频率属性。
5.结果分析:对上述步骤得到的结果进行分析,包括比较基本运算前后的信号波形变化,以及傅里叶变换前后的频谱差异等。
四、实验结果1.信号显示:通过绘制图形,我们观察到正弦波和方波在时域中的波形特点。
正弦波呈现周期性的波形,方波则呈现明显的阶跃特性。
2.基本运算:通过对比基本运算前后的信号波形图,我们可以观察到信号经过加法、减法、乘法、反转等运算后,其波形发生相应的变化。
例如,两个信号相加后,其幅度和时间与原信号不同。
反转信号则使得波形在时间轴上反向。
3.傅里叶变换:通过FFT变换,我们将时域中的正弦波和方波转换到频域。
正弦波的频谱显示其频率为单一的直流分量,方波的频谱则显示其主要频率分量是直流分量和若干奇数倍的谐波分量。
使用matlab来实现 时域离散信号的产生实验心得
使用matlab来实现时域离散信号的产生实验心得【标题】使用Matlab实现时域离散信号的产生实验心得【导语】在信号与系统课程的学习中,时域离散信号的产生是一个重要的实验内容。
本文将结合个人实验经验,探讨如何使用Matlab来实现时域离散信号的产生,以及实验心得体会。
【主体内容】一、时域离散信号的概念时域离散信号是指信号在时域上是离散的,其取样时间是离散的。
与连续信号相对应,离散信号具有一些独特的特性和处理方法。
在实际应用中,我们经常需要生成各种形式的时域离散信号,用于系统模拟、滤波器设计等方面。
二、Matlab在时域离散信号产生中的应用1. 生成简单的离散信号在Matlab中,可以利用基本的数学函数和操作符来生成简单的离散信号。
可以利用sin、cos等函数来生成正弦信号、余弦信号,利用随机数函数来生成随机信号等。
Matlab还提供了丰富的绘图函数,可以直观地展示生成的离散信号。
2. 生成复杂的离散信号除了基本的数学函数外,Matlab还提供了丰富的信号处理工具箱,可以用于生成各种复杂的离散信号。
可以利用波形合成函数生成有限长序列、周期序列等特殊形式的信号;还可以利用滤波器设计函数生成特定频率特性的信号等。
三、实验心得与体会在实验中,我深切体会到Matlab在时域离散信号生成方面的强大功能和便捷性。
通过Matlab,我能够快速生成各种形式的离散信号,并对其进行分析、处理和展示。
Matlab的直观、交互式界面也使得实验过程更加高效和愉悦。
在实践中,我也发现了一些问题和经验总结。
在生成复杂离散信号时,需要深入理解各种信号处理工具箱的使用方法,以及不同函数的参数设置;在展示离散信号时,需要注意选择合适的绘图方式,清晰地展现信号的特点和规律。
【总结与回顾】本文通过介绍时域离散信号的概念和Matlab在信号生成中的应用,共享了个人的实验心得和体会。
希望能够对读者有所启发,开拓视野,加深对时域离散信号的理解和掌握。
常见离散信号产生和实现实验报告
常见离散信号产生和实现实验报告实验1常见离散信号产生和实现学院信息科学与工程学院专业通信工程1班姓名学号一、实验目的1、加深对常用离散信号的理解;2、熟悉使用MATLAB在时域中产生一些基本的离散时间信号。
二、实验原理MATLAB语言提供了一系列函数用来产生信号,如exp,sin,cos, square,sawtooth,ones,zeros等函数。
1.基本信号序列1)单位抽样序列???=01)(nδ≠=n n在MATLAB中可以利用zeros()函数实现。
x=[1zeros(1, n-1)]程序:clear all;n=-20:20;u=[zeros(1,20)ones(1,21)];stem(n,u)xlabel('Time index n');ylabel('Amplitude'); title('p21');axis([-20200 1.2]);图形:Request1:编写一个)(k n-δ的函数。
???=-01)(k nδ≠=n kn程序:clear all;n=-20:20;k=5;u=[zeros(1,20+k)ones(1,21-k)];stem(n,u)xlabel('Time index n');ylabel('Amplitude'); title('p22');axis([-20200 1.2]);图形:(2)单位阶跃序列???01)(n u00<≥n n在MATLAB中可以利用ones()函数实现。
);,1(N ones x=Request2:编写一个)(k n u-的函数。
程序:clf;n=-20:20;u=[zeros(1,20)1zeros(1,20)];stem(n,u);xlabel('Time index n');ylabel('Amplitude');title('Unit Sample Sequence p10');axis([-20200 1.2]);图形:Request2:编写一个)(k n u-的函数。
离散信号时域分析的MATLAB实现
实验十一 离散信号时域分析的MATLAB 实现一、实验目的1. 熟悉MATLAB 编程方法、常用语句和可视化绘图技术;2. 掌握序列时域运算的MATLAB 编程方法。
二、实验原理在用MATLAB 表示离散信号并将其可视化时,由于矩阵元素个数是有限的,因此无法表示无限长序列;另外,离散信号无法进行符号运算。
在MATLAB 中,绘制离散序列波形图的专用命令为stem( )。
其格式有:(1)stem(k,f)在图形窗口中,绘制出样值顶部为空心圆的序列f (k)波形图。
(2)stem(k,f ,’fill’)在图形窗口中,绘制出样值顶部为实心圆的序列f (k)波形图。
下面介绍离散序列的MATLAB 表示、基本运算(相加、相乘、平移、反转、尺度变换)、卷积和的实现及其图形显示方法。
1.单位序列δ(k ) 单位序列的定义:⎩⎨⎧≠==0,00,1)(k k k δ下面为绘制δ(k-k 0)波形图的子程序:function impseq(k1,k2,k0) %单位序列δ(k-k0),k0为时移量k=k1:k2; %k1,k2为序列的起止序列号 n=length(k); x=zeros(1,n);x(1,k0-k1+1)=1; %在k0时刻信号赋值为1 stem(k,x,'fill') axis([k1,k2,0,1.1])title('单位序列d(k-k0)')输入如下命令,则可获得单位序列δ(k-3)的波形图,如图11-1所示。
impseq(-1,5,3)图11-12.单位阶跃序列ε(k ) 单位序列的定义:⎩⎨⎧<≥=0,00,1)(k k k ε下面为绘制ε(k-k 0)波形图的MATLAB 子程序。
function stepseq(k1,k2,k0) %单位阶跃序列,k0为时移量 k=k1:k0-1; %k1,k2为序列的起止序列号 kk=length(k);x=zeros(1,kk); %k0前信号赋值为0 stem(k,x,'fill') %绘出k1~k0-1的波形(0值) hold onn=k0:k2; nn=length(n);x=ones(1,nn); %k0后信号赋值为1 stem(n,x,'fill') %绘出k0~k2的波形(1值) hold offaxis([k1,k2,0,1.1]) title('单位阶跃序列')运行如下命令,则可获得单位序列ε(k-3)的波形图,如图11-2所示。
实验六 基于MATLAB的离散系统时域分析
实验六基于MATLAB的离散系统时域分析一、实验名称基于MATLAB的离散系统时域分析二、实验目的1.掌握离散时间序列卷积和MATLAB实现的方法。
2.掌握离散系统的单位响应及其MATLAB的实现方法。
3.掌握用MATLAB表示离散系统的时域响应。
三、实验器材安装MATLAB软件的电脑一台四、预习要求1.熟悉离散时间序列的卷积和原理2.熟悉编程实现离散时间序列的卷积和3.熟悉离散系统的单位响应及其常用函数的调用格式五、实验原理1. (1)单位序列(单位脉冲序列)MATLAB描述。
MATLAB函数可写为k=[k1:k2]; %k1,k2为时间序列的起始及终止时间序号fk=[(k-k0)==0]; %k0为§(k)在时间轴上的位移量stem(k,fk)(2)单位阶跃序列MATLAB描述。
MARLAB函数可写为k=[k1:k2] %k1,k2为时间序列的起始及终止时间序号fk=[(k-k0)>=0] %k0为 (k)在时间轴上的位移量stem(k,fk)2. 离散系统的时域响应MATLAB提供了求离散系统响应的专用函数filter()filter函数能求出差分方程描述的离散系统在指定时间范围内的输入序列所产生的响应序列的数值解。
其调用格式如下:filter(b,a,x)其中,b 和a 是由描述系统的差分方程的系数决定的、表示离散系统的两个行向量;x 是包含输入序列非零样点的行向量。
上述命令将求出系统在与x 的取样时间点相同的输出序列样值。
3.离散时间序列的卷积设序列f1(k)在1n ~2n 范围内非零,f2(k)在1m ~2m 范围内非零,则f1(k)时域宽度为L1=2n -1n +1,f2(k)的时域宽度为L2=2m -1m +1。
由卷积和的定义可得,序列y(k)=f1(k)*f2(k)的时域宽度为L=L1+L2-1,且只在(1n +1m )~(1n +1m +L1+L2-2)范围内非零。
用MATLAB实现常用的连续时间信号及其时域运算
用MATLAB实现常用的连续时间信号及其时域运算信息与通信工程学院通信133班卢承慧一.引言1.要求:1.1用MATLAB语言产生连续时间信号1.2对连续时间信号进行时域运算2.任务:①绘制用于产生以下信号的通用程序,要求对于任意给定的参数都能实现所要求的信号。
调试并运行这些程序,具体产生由指导教师制定的信号并绘制信号波形。
a. f(t)=δ(t-t );b. f (t) = Au(t-t )。
②已知信号波形如图7.6所示,使用MATLAB语言求出下列信号的表达式并绘制出各信号波形。
a.f(-t);b.f(t-2);c.f(1-2t)。
图7.6任务②中的f(t)3.思考题编制一通用程序用于产生信号)()cos()(0t t u t Ae t f at -=-ω,要求对于任意给定的参数都能实现所要求的信号。
二.基本原理1.1连续时间信号如果在所讨论的时间间隔内,除若干个不连续点之外,对于任意时间值都可以给出确定的函数值,此信号就称为连续信号。
从严格意义上来讲,MATLAB 不能处理连续时间信号。
在MATLAB 中,使用连续时间信号在等时间间隔点的样值来近似表示连续时间信号的。
当取样时间间隔足够小时,这些离散的样值就能较好的近似出连续时间信号。
由于在MATLAB 中,矩阵的元素个数是有限的,因此MATLAB 无法表示无限序列。
MATLAB 的绘图命令有很多种,其中比较常用的绘制连续时间信号的绘图命令有“plot ”,“stairs ”,“ezplot ”等。
“plot ”适用于绘制平滑的曲线,而“stairs ”适合于绘制具有阶跃形式的图形,“ezplot ”只能用于符号函数的绘图。
1.2单位阶跃信号单位阶跃信号的波形图如图1所示,通常以符号u (t )表示⎩⎨⎧><=)0( 1)0( 0)(t t t u在跳变点t=0处,函数未定义,或在t=0处规定函数值u (0)=21。
图1用MATLAB 实现单位阶跃信号%t1:起始时刻;t2:终止时刻;t0:跳变时刻function u(t1,t0,t2)t=t1:0.01:t2; %步长值越小,图形越精确 n=length(t); tt=t0:0.01:t2; n1=length(tt);x=[zeros(1,n-n1),ones(1,n1)]; %产生单位阶跃信号 stairs(t,x),grid on title('单位阶跃信号')axis([t1 t2 -0.2 1.1]) %为方便波形顶部避开图 框,改变图框坐标1.3单位冲激信号单位冲激信号是持续时间无穷小、瞬间幅度无穷大、涵盖面积恒1的理想信号。
matlab中fft的用法
matlab中fft的用法
在MATLAB中,FFT(Fast Fourier Transform)是一种常用的快速傅里叶变换算法,用于计算离散时间信号的频谱。
FFT是一种高效算法,可以快速计算信号在时域和频域之间的转换。
下面是在MATLAB中使用FFT的一些基本步骤:
1. 定义信号:首先需要定义一个离散时间信号。
可以使用向量或矩阵来表示信号。
2. 计算FFT:使用fft函数来计算信号的FFT。
例如,可以输入以下命令来计算信号x的FFT:
```matlab
y = fft(x);
```
3. 显示频谱:使用plot函数来显示FFT计算得到的频谱。
例如,可以输入以下命令来显示信号x的频谱:
```matlab
plot(abs(y));
```
4. 进行傅里叶变换:如果需要对信号进行傅里叶变换,可以使用fft2函数来计算二维FFT。
例如,可以输入以下命令来计算图像x的傅里叶变换:
```matlab
Y = fft2(x);
```
5. 进行逆傅里叶变换:如果需要对信号进行逆傅里叶变换,可以使用ifft函数来计算。
例如,可以输入以下命令来对信号x进行逆傅里叶变换:
```matlab
x_inv = ifft(Y);
```
以上是在MATLAB中使用FFT的基本步骤。
需要注意的是,在进行FFT计算时,需要将信号转换为复数形式。
此外,在进行傅里叶变换时,需要将信号转换为二维形式。
实验一离散时间信号与系统时域分析
实验一离散时间信号与系统时域分析实验目的1学习MATLAB语言编程和调试技巧2学会简单的矩阵输入和图形表示法3掌握简单的绘图命令一实验目的1学习MATLAB语言编程和调试技巧2学会简单的矩阵输入和图形表示法3掌握简单的绘图命令二、实验原理本实验主要为了熟悉MATLAB环境,重点掌握简单的矩阵(信号)输入和绘图命令,特别是绘图命令tem()和plot()。
实验内容中涉及到信号的无失真采样、离散卷积运算和差分方程求解这三个主要的问题。
其基本原理分别如下:对一个模拟信号某(t)进行采样离散化某(n),为了不失真地从采样信号某(n)中恢复原始信号某(t),采样时必须满足采样定理,即采样频率必须大于等于模拟信号中最高频率分量的2倍。
一个离散时间系统,输入信号为某(n),输出信号为y(n),运算关系用T[﹒]表示,则输入与输出的关系可表示为y(n)=T[某(n)]。
(1)线性时不变(LTI)系统的输入输出关系可通过h(n)表示:y(n)=某(n)某h(n)=式中某表示卷积运算。
(2)LTI系统的实现可物理实现的线性时不变系统是稳定的、因果的。
这种系统的单位脉冲响应是因果的(单边)且绝对可和的,即:h(n)0,n0;nh(n)0在MATLAB语言中采用conv实现卷积运算,即:Y=conv(某,h),它默认从n=0开始。
常系数差分方程可以描述一个LTI系统,通过它可以获得系统的结构,也可以求信号的瞬态解。
利用MATLAB 自带的filter(),可以代替手工迭代运算求解系统的差分方程,求解的过程类似于对输入信号进行滤波处理。
三、实验内容1、试画出如下序列的波形(1)某(n)3(n3)(n2)2(n1)4(n1)2(n2)3(n3)(2)某(n)0.5R10(n)解:用MATLAB描述波形1(1)某=[3120-42-3];%矩阵输入某n=-3:1:3;%输入自变量n,以间隔为1从-3到3变化n实验目的1学习MATLAB语言编程和调试技巧2学会简单的矩阵输入和图形表示法3掌握简单的绘图命令tem(n,某);%tem()函数绘制火柴杆图,注意n,某元素个数必须相等某label('n');%横坐标显示nylabal('某(n)');%纵坐标显示某(n)grid;%绘制网格1(2)n=0:9;某=0.5.^n;tem(n,某);某label('n');ylabel('某(n)');gri实验目的1学习MATLAB语言编程和调试技巧2学会简单的矩阵输入和图形表示法3掌握简单的绘图命令2、用MATLAB计算序列{-201–13}和序列{120-1}的离散卷积,即计算某(n)2(n)(n2)(n3)3(n4)与h(n)(n)2(n1)(n3)解:用MATLAB描述波形。
基于MATLAB的信号采样与离散系统的时域分析
基于matlab的信号采样与离散系统的时域分析原理1、信号采样与重建的原理取样定理:论述了在一定条件下,一个连续信号完全可以用离散样本值表示。
这些样本值包含了该连续信号的全部信息,利用这些样本值可以恢复原信号。
可以说,取样定理在连续信号与离散信号之间架起了一座桥梁。
为其互为转换提供了理论依据。
所谓“取样”就是利用取样脉冲序列s(t)从连续信号f(t)中“抽取”一系列离散样本值的过程。
这样得到的离散信号称为取样信号fs(t) 。
画fs(t)的频谱时,设定ωS≥2ωm ,这时其频谱不发生混叠,因此能设法(如利用低通滤波器)从Fs (jω)中取出F(jω),即从fs(t)中恢复原信号f(t); 否则将发生混叠。
设有限时宽余弦信号f(t)=cos(2Πt/3)(0≤t≤40),用它近似理想余弦信号,用MATLAB编程求该信号和其采样信号的频谱,对比观察过采样和欠采样状态。
采样周期通过键盘输入。
程序:% 时域采样定理display('奈奎斯特周期0.25秒,Ts<0.25,过采样,Ts>0.2.5,欠采样');display('Please input the value of sample period');Ts = input('Ts = ');%绘制有限长余弦信号y=cos(2/3*pi*t)t = 0:0.01:40;y = cos(2/3*pi*t);subplot(221);plot(t,y);axis([0 6 -1.1 1.1]);xlabel('t 单位:s','Fontsize',8);title('f(t)');line([0 6],[0 0],'color',[0 0 0]);%数值求解余弦信号的频谱N = 300;W = 2*pi*5;k = -N:N;w = k*W/N;Y = 0.01*y*exp(-j*t'*w); %求f(t)的傅里叶变换F1(ω)Y = abs(Y);subplot(222);plot(w/pi,Y)axis([-2,2,0,pi*7+0.2]);title('F(j\omega)');xlabel('\omega 单位:pi');%采样后的余弦信号subplot(223);plot(t,y,'b:'); %绘制包络hold ont2=0:Ts:40;y2=cos(2/3*pi*t2);stem(t2,y2);axis([0 6 -1.1 1.1]);xlabel('t 单位:s','Fontsize',8);title('fs(t)');hold off%采样后余弦信号的频谱Y2 = Ts*y2*exp(-j*t2'*w);Y2 = abs(Y2);subplot(224);plot(w/pi,Y,'b') %蓝色绘制原信号频谱xlabel('\omega 单位:pi');title('Fs(j\omega)');hold onplot(w/pi,Y2,'r'); %红色绘制采样信号频谱axis([-2,2,0,pi*10]);hold off%end2.离散时间系统(1)线性时不变(LTI) 离散时间系统用常系数线性差分方程进行描述:其中,f[k]和y[k]分别表示系统的输入和输出,N=max(n,m)是差分方程的阶数。
用MATLAB实现常用的离散时间信号及其时域运算
⽤MATLAB实现常⽤的离散时间信号及其时域运算⽤MATLAB 实现常⽤的离散时间信号及其时域运算摘要:1.运⽤MATLAB 的绘图指令绘制离散时间信号;2.⽤MATLAB 实现离散时间信号的时域运算。
关键词:MATLAB 离散时间信号时域运算实验⽬的:1.复习MATLAB 语⾔以及常⽤指令2.学习和掌握⽤MATLAB 语⾔产⽣离散时间信号的编程⽅法3.通过编程绘制出离散时间信号波形,加深理解信号的时域运算实验原理:1.1单位阶跃序列和单位样值序列离散时间信号只在某些离散瞬间时给出信号的值,因此,它是时间上不连续的序列。
单位阶跃序列和单位样值序列在离散信号与系统的分析中是两个⾮常典型的序列,分别记为u(n)和δ(n),他们的定义分别如下:≠≡=)0(0)0(1)(n n n δ≥<=)0(1)0(0)(n n n u若单位节约序列的起始点为n 0,单位样值序列出现在n 0时刻,则表达式为:2.离散时间信号的时域运算与连续时间信号的研究类似,在离散系统分析中,经常遇到离散时间的运算,包括两信号的相加、相乘以及序列本⾝的移位、反褶、尺度等等,也需要了解在运算过程中序列的以及相应的波形的变化。
序列)(n x 的反褶:序列)(n x 的移位:序列)(n x 的尺度:两序列)(1n x 和)(2n x 相加减:两序列)(1n x 和)(2n x 相乘: )()(21n x n x ?≥<=-)(1)(0)(000n n n n n n u ≠==-)(0)(1)(000n n n n n n δ)(n x -)(0n n x -)(an x )()(21n x n x ±试验任务:1.绘制⽤于产⽣以下信号的通⽤程序1 )()(0n n A n x -=δ2 )]()([)(21m n u m n u A n x ---=1.1 程序和图形见附录11.2 程序和图形见附录22.已知波形,求表达式并绘出各信号波形①)()2(k u k f - ②)2(+-k f ③)2()2(--k u k f 2.程序和图形见附录3附录1:clear% n1:起始时刻;n0:跳变时刻;n2:终⽌时刻;t1=input('请输⼊起始时刻n1=');t0=input('请输⼊跳变时刻n0=');t2=input('请输⼊终⽌时刻n2=');A=input('请输⼊幅度A=');t=t1:t2;n=length(t);tt=t1:t0;n1=length(tt);x=zeros(1,n);x(n1)=A*1;stem(t,x),grid ontitle('x(n)')axis([t1 t2 -0.2 A+1])n1=-2,n0=1,n2=3,A=2附录2:Clear%n1:起始时刻;m1第⼀次跳变时刻;m2:第⼆次跳变时刻;n2:终⽌时刻;t1=input('请输⼊起始时刻n1=');t0=input('请输⼊第⼀次跳变时刻m1=');t3=input('请输⼊第⼆次跳变时刻m2=');t2=input('请输⼊终⽌时刻n2=');A=input('请输⼊幅度A=');t=t1:t2;n=length(t);tt=t0:t2;n1=length(tt);x=[zeros(1,n-n1),ones(1,n1)];ttt=t3:t2;n2=length(ttt);y=[zeros(1,n-n2),ones(1,n2)];z=A*(x-y);stem(t,z),grid ontitle('x(n)')axis([t1, t2 ,min(z)-1, max(z)+1]) n1=-3,n2=3,m1=-1,m2=1,A=2附录3:1.离散序列反褶函数(lsfz.m)function[f,k]=lsfz(f1,k1)f=fliplr(f1);k=-fliplr(k1);2.离散序列移位函数(lspy.m)function[f,k]=lspy(ff,kk,k0)k=kk+k0;f=ff;3.离散序列相乘函数(lsxc.m)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;Return4.主程序:cleari=1;for m=-3:4if m<0f(i)=m+3;elseif(m==4)f(i)=0;elsef(i)=3;endi=i+1;end%f(k)m=-3:4subplot(221),stem(m,f,'filled'),grid on,title('f(k)') axis([min(m)-1,max(m)+1,min(f)-0.5,max(f)+1]) i=1;for n=-4:6if n<0u(i)=0;elseu(i)=1;endi=i+1;endn=-4:6m=-3:4%f(k-2)[y1,k1]=lspy(f,m,2);%f(-k)[y2,k2]=lsfz(f,m);%u(k-2)[y3,k3]=lspy(u,n,2);%f(k-2)u(k)[z1,k]=lsxc(y1,u,k1,n)subplot(222),stem(k,z1,'filled'),grid on,title('f(k-2)u(n)')axis([min(k)-1,max(k)+1,min(z1)-0.5,max(z1)+1])%f(-k+2)[z2,w2]=lspy(y2,k2,2)subplot(223),stem(w2,z2,'filled'),grid on,title('f(-k+2)')axis([min(w2)-1,max(w2)+1,min(z2)-1,max(z2)+1])%f(k-2)u(k-2)[z3,w3]=lsxc(y1,y3,k1,k3)subplot(224),stem(w3,z3,'filled'),grid on,title('f(k-2)u(k-2)') axis([min(w3)-1,max(w3)+1,min(z3)-0.5,max(z3)+0.5])。
离散时间信号的时域分析实验报告
离散时间信号的时域分析实验报告实验名称:离散时间信号的时域分析⼀、实验⽬的1.学会⽤MATLAB在时域中产⽣⼀些基本的离散时间信号,并对这些信号进⾏⼀些基本的运算。
2.熟悉MATLAB中产⽣信号和绘制信号的基本命令。
⼆、实验内容1.在载波信号xH[n]和调制信号xL[n]采⽤不同频率、不同调制指数m的情况下,运⾏程序P1.6,以产⽣振幅调制信号y[n]。
2.编写matlab程序,以产⽣图1.1和图1.2所⽰的⽅波和锯齿波序列,并将序列绘制出来。
三、主要算法与程序1.n=0:100;m=0.6;fH=0.2;fL=0.02;xH=sin(2*pi*fH*n);xL=sin(2*pi*fL*n);y=(1+m*xL).*xH;stem(n,y);grid;xlabel('时间序列');ylabel('振幅');通过改变m,fH和fL来产⽣不同情况下的振幅调制信号。
2.画出图⼆:n=0:1:30;y=3*square(n*pi/5,60);stem(n,y),grid onaxis([0,30,-4,4]);xlabel('时间序号n');ylabel('振幅');为画出图三,将占空⽐由图⼆的60改为30。
画出图四:n=0:1:50;y=2*sawtooth(n*pi/10,1);stem(n,y),grid onaxis([0,50,-2,2]);xlabel('时间序号n');ylabel('振幅');为画出图五,将图四中从-1到1的范围由1改为0.5。
四、实验结果与分析图⼀确定了数值:m=0.6,fH=0.2,fL=0.02,绘出图像。
图⼆图三图四图五五、实验⼩结通过这次实验,我熟悉MATLAB中产⽣信号和绘制信号的基本命令,学会⽤MATLAB在时域中产⽣⼀些基本的离散时间信号,并对这些信号进⾏⼀些基本的运算。
离散时间信号的时域分析实验报告
xlabel('n'),title('x(n)=(-0.8)^(n)')
5)正弦序列
n=0:39;
x=sin(pi/6*n);
stem(n,x,'fill'),xlabel('n'),gridon
title('正弦序列')
axis([0,40,-1.5,1.5])
axis([-4 16 0 3])
4、z变换
clc,clearall;
x=sym('a^n*cos(pi*n)');
z=ztrans(x);
simplify(z)
clc,clear;
x=sym('2^(n-1)-(-2)^(n-1)');
z=ztrans(x);
simpliclear;
xlabel('n'),title('x(n)')
axis([-4 16 0 3])
subplot(312)
stem(nh,h,'fill'),gridon
xlabel('n'),title('h(n)')
subplot(313)
stem(ny,y,'fill'),gridon
xlabel('n'),title('y(n)=x(n)*h(n)')
一、实验目的:
1、学会运用MATLAB表示常用的离散时间信号及基本运算;
2、学会运用MATLAB实现离散时间信号的变换和反变换;
3、学会运用MATLAB分析离散时间信号的零极点分布与其时域特性的关系;
实验一离散信号与系统时域分析的Matlab实现
实验1 离散信号与系统时域分析的Matlab实现一、实验目的1.掌握用Matlab表示常用离散信号的方法;2.掌握用Matlab求解离散系统的单位取样响应与零状态响应;3.掌握用Matlab实现离散信号卷积的方法;二、实验原理与内容1. Matlab基本操作打开Matlab 6.5,只保留命令窗口(Command Window),点击文本编辑窗口(M-file)创建、编辑M程序。
图1命令窗口在文本编辑窗口输入指令程序。
当输入完整程序后,点击DEBUG→RUN运行程序,或用键盘F5键直接运行。
另外,也可点击窗口快捷运行程序键。
图2文本编辑窗口编辑完成一个程序后,第一次运行或另存为时,需要保存M程序,保存的路径为命令窗口所示的当前目录路径(Current Directory),该路径可自行设置。
图3当前目录路径注意:M 文件在命名时有一定规则,错误命名时会使M 文件不能正常运行。
(1)M 文件名首字符不能是数字或下划线。
(2)M 文件名不能与Matlab 的内部函数名相同(3)M 文件名中不能有空格,不能含有中文。
一般应采用英文或拼音对M 文件命名。
2.离散信号的Matlab 表示表示离散时间信号x(n)需要两个行向量,一个是表示序号n=[ ],一个是表示相应函数值x=[ ],画图指令是stem 。
(1)正、余弦序列正、余弦序列为MATLAB 内部函数,可直接调用,文件名为sin 和cos 。
例1-1 画出()sin()4x n n π=的波形。
打开文本编辑窗口,输入波形程序:n=0:40;xn=sin(pi*n/4);stem(n,xn,'.')title('sin(pi*n/4)')运行,输出波形如下图4。
图4 ()x n 的波形图对于0cos()n ωϕ+或0sin()n ωϕ+,当2/πω是整数或有理数时,才是周期信号。
练习:(1)把上述程序中第三行分别改为stem(n,xn)、stem(n,xn,'*') 、stem(n,xn,' filled ') 后依次运行,看输出波形有何变化。
基于MATLAB的离散时间信号的时域分析
基于MATLAB的离散时间信号的时域分析时域分析是对信号在时间上的特性进行分析的一种方法。
通过时域分析,可以获取信号的平均能量、幅值、相位、频率等信息,从而对信号进行描述、处理和识别。
MATLAB是一个功能强大的数学计算和数据可视化工具,可以用于离散时间信号的时域分析。
下面将介绍如何使用MATLAB进行离散时间信号的时域分析。
首先,我们需要通过MATLAB生成一个离散时间信号。
可以使用MATLAB中的`randn`函数生成一个高斯白噪声信号作为例子。
例如,我们生成一个包含1000个采样点的白噪声信号:```matlabx = randn(1, 1000);```其中,`randn`函数会生成一个1行1000列的数组,每个元素都是一个服从均值为0、方差为1的高斯分布的随机数。
接下来,我们可以使用MATLAB提供的功能函数对信号进行时域分析。
1.平均能量平均能量是信号在时间上的能量分布情况的度量。
可以使用`mean`函数计算平均能量:```matlabaverage_power = mean(abs(x).^2);```其中,`abs`函数用于计算信号的绝对值,`.^`是对每个元素进行乘方运算。
`mean`函数则用于计算平均值。
2.幅值幅值是信号波形在时间上的振幅变化情况。
可以使用`abs`函数计算信号的幅值:```matlabamplitude = abs(x);```3.相位相位是信号波形的起伏特性,描述了信号在时间上的相对位置。
可以使用MATLAB中的`angle`函数计算信号的相位:```matlabphase = angle(x);```4.频率频率是信号中周期性变化的频率分布情况。
可以使用MATLAB中的`fft`函数进行频率分析。
`fft`函数将信号从时域转换到频域,得到信号在不同频率上的成分。
```matlabN = length(x); % 信号长度X = fft(x);frequencies = (0:N-1) * (1/N); % 计算频率范围```其中,`N`表示信号的长度,`X`表示信号的频谱,`frequencies`表示信号在不同频率上的成分。
离散时间信号的时域分析
实验二离散时间信号的时域分析1.实验目的(1)学习MATLAB软件及其在信号处理中的应用,加深对常用离散时间信号的理解。
(2)利用MATLAB产生常见离散时间信号及其图形的显示,进行简单运算。
(3)熟悉MATLAB对离散信号的处理及其应用。
2.实验原理离散时间信号是时间为离散变量的信号。
其函数值在时间上是不连续的“序列”。
(1)单位抽样序列如果序列在时间轴上面有K个单位的延迟,则可以得到,即:该序列可以用MATLAB中的zeros函数来实现。
(2)正弦序列可以利用sin函数来产生。
(3)指数序列在MATLAB中通过:和来实现。
3.实验内容及其步骤(1)复习有关离散时间信号的有关内容。
(2)通过程序实现上述几种信号的产生,并进行简单的运算操作。
单位抽样序列参考:% Generation of a Unit Sample Sequenceclf;% Generate a vector from -10 to 20n = -10:20;% Generate the unit sample sequenceu = [zeros(1,10) 1 zeros(1,20)];% Plot the unit sample sequencestem(n,u);xlabel('Time index n');ylabel('Amplitude');title('Unit Sample Sequence');axis([-10 20 0 1.2]);如果序列在时间轴上面有K个单位的延迟,则可以得到,即:,通过程序来实现如下所示结果。
正弦序列参考:% Generation of a sinusoidal sequencen = 0:40; f = 0.1;phase = 0; A = 1.5;arg = 2*pi*f*n - phase; x = A*cos(arg);clf; % Clear old graphstem(n,x); % Plot the generated sequenceaxis([0 40 -2 2]); grid;title('Sinusoidal Sequence'); xlabel('Time index n');ylabel('Amplitude'); axis;指数序列参考:% Generation of a real exponential sequenceclf; n = 0:35; a = 1.2; K = 0.2;x = K*a.^n; stem(n,x);xlabel('Time index n'); ylabel('Amplitude');(3)加深对离散时间信号及其特性的理解,对于离散信号能进行基本的运算(例如信号加、乘、延迟等等),并且绘出其图形。
matlab离散信号时域分析实验报告
matlab离散信号时域分析实验报告实验目的:本实验旨在通过使用Matlab对离散信号进行时域分析,探究离散信号的特性和变化规律,加深对信号处理理论的理解,提高实际应用能力。
实验仪器和材料:Matlab软件实验步骤:1. 生成离散信号:首先,我们使用Matlab生成一个离散信号,可以是正弦信号、方波信号等。
通过调整频率、幅度等参数,可以得到不同特性的信号。
2. 时域分析:接下来,我们对生成的离散信号进行时域分析,包括信号的幅度、相位、周期等特性进行分析,通过Matlab提供的函数和工具进行计算和可视化展示。
3. 变换分析:除了时域分析外,我们还可以对离散信号进行变换分析,如傅里叶变换、离散傅里叶变换等,通过观察频谱图和功率谱图等来分析信号的频率成分和能量分布情况。
4. 实验结果分析:最后,根据实验结果进行分析,总结离散信号的特性和变化规律,对信号处理理论进行深入理解。
实验结果:通过实验,我们得到了生成的离散信号的时域特性、频域特性等数据和图表,并对其进行了分析和总结。
我们发现不同频率、幅度的离散信号具有不同的时域特性和频域特性,这为我们理解信号处理理论提供了直观的实验数据和实例。
实验结论:通过本次实验,我们深入了解了Matlab对离散信号进行时域分析的方法和步骤,加深了对信号处理理论的理解,提高了实际应用能力。
同时,我们也发现了离散信号的特性和变化规律,为进一步的研究和应用提供了基础。
实验心得:本次实验让我对离散信号的时域分析有了更深入的理解,也提高了我在Matlab软件上的操作能力。
通过实验,我对信号处理理论有了更直观的认识,为今后的学习和研究打下了坚实的基础。
希望能够通过更多的实验和学习,不断提升自己在信号处理领域的能力和水平。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用M A T L A B实现常用的离散时间信号及其时域
运算
WTD standardization office【WTD 5AB- WTDK 08- WTD 2C】
实验四用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≥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??÷D?o?')
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语言产生离散时间信号的编程方法,同时加深了对离散信号时域算法的理解,受益匪浅!!!。