用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的理想信号。
- 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语言产生离散时间信号的编程方法,同时加深了对离散信号时域算法的理解,受益匪浅!!!。