用MATLAB实现常用的离散时间信号及其时域运算

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

实验四用MATLAB实现常用的离散时间信号及其时域运算——摘要:在MATLAB中,只能用向量来表示离散时间信号。与连续信号不同,离散时间信号无法用符号运算来表示。用适当的MATLAB语句表示出信号后,就可以利用MATLAB的绘图命令stem来绘出直观的信号波形图,stem是专门用于绘制离散时间信号的。在MATLAB中离散序列的时域运算和变换不能用符号运算来实现,而必须用向量表示的方法,即在MATLAB中离散序列的相加、相乘需表示成两个向量的相加、相乘,因而参加运算的两序列向量必须有相同的维数。一、实验目的:(1)学习MATLAB语言及其常用指令;(2)学习和掌握用MATLAB语言产生离散时间信号的编程方法;(3)通过编程绘制出离散时间信号的波形,加深理解信号的时域运算。二、实验内容:(1)运用MATLAB的绘图指令绘制离散时间信号;(2)用MATLAB语言实现离散时间信号的时域运算。三、实验原理:(1)单位阶跃序列和单位样值序列。离散时间信号只在某些离散的瞬时给出信号的值,因此,它是时间上不连续的序列。单位阶跃序列和单位样值序列在离散时间信号与系统的分析中是两个非常典型的序列,分别记为u(n)和δ(n)。它们的定义分别如下:1n≥01n≥0u(n)=δ(n)=0n00n≠0若单位阶跃序列的起始点为n0,单位样值序列出现在n0时刻,则表达式分别为:1n≥n01n=n0u(n-n0)=δ(n-n0)=0nn00n≠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)程序:functionun(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),gridontitle('µ¥Î»³å»÷ÐźÅ')axis([t1,t2-0.24])②x(n)=A[u(n-m1)-u(n-m2)]程序:functionunn(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);gridonaxis([t1t2-0.24])(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)-0.5),(max(f)+0.5)])则该离散信号的编程如下: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),gridontitle('f(k-2)*u(k)');axis([t1t2-14])②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),gridontitle('f(-k+2))');axis([t1t2-14])③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),gridontitle('f(k-2)*u(k-2)');axis([t1t2-14])五.思考题程序如下: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)-0.5),(max(f)+0.5)])六、实验总结通过这次试验不仅了解了许多常用函数,例如相加相乘、反折、平移,还学习和掌握了用MATLAB语言产生离散时间信号的编程方法,同时加深了对离散信号时域算法的理解,受益匪浅!!!

1 / 9
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功