logo资料库

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

第1页 / 共10页
第2页 / 共10页
第3页 / 共10页
第4页 / 共10页
第5页 / 共10页
第6页 / 共10页
第7页 / 共10页
第8页 / 共10页
资料共10页,剩余部分请下载后查看
用 MATLAB 实现常用的离散时间信号及其时域运算 信息与通信工程学院 通信 131 班 2013136130 赵颖 摘要: 在 MATLAB 中,离散信号和连续信号是有一些区别的。离散信号只能用 向量来表示,与连续信号不同,连续信号即可以用向量表示,也可以用符号运算 表示。本实验用 MATLAB 实现常用的离散时间信号及其时域运算,运用 MATLAB 的绘图指令绘制离散时间信号。熟练掌握 MATLAB 软件的使用方法并学习离散信 号的 MATLAB 表示方式,实践与理论结合,巩固所学的知识。 一、引言 1、题目要求 学习用 MATLAB 语言产生离散时间信号并对离散时间信号进行时域运 算。 2、任务 (1)、编制用于产生下列信号的通用程序,要求对于任意给定的参数都能 实现所要求的信号。调试并运用这些通用程序,具体产生由指导教师指定的信号 并绘制信号波形。 a、 )( nx (   0nnA  ) b、 )( nx  ([ mnuA 1  )  ( mnu 2  )] (2)、已知离散序列波形如图 1.2.1 所示,试用 MATLAB 绘出满足下列要 求的序列波形。 a、 ( kf  )()2 ku b、 f ( k )2 c、 ( kf  ()2 ku  )2
二、基本原理 图 1.2.1 离散时间信号在时间上是离散的,只是在某些不连续的瞬间给出特定 的函数值,因此,离散信号也可以由连续信号抽样得到。典型的离散信号包括: 单位样值信号 )(n 、单位阶跃序列 ( 0nnu  、以及矩形序列等。 ) 1、单位样值信号δ(n) 单位样值信号是持续时间无穷小、瞬间幅度无穷大、涵盖面积恒为 1 的理想信号,记为 )(n ,其数学表达式为:   t )( dt 1 f )(t = )( t (0  t  )0 单位样值信号的图形如 2.1.1 所示: 图 2.1.1 其对应代码为: clc clear n=5; x=zeros(1,n); x(1)=1; xn=0:n-1; stem(xn,x,'fill') axis([-5 5 0 2]) 2、单位阶跃序列
单位阶跃信号是一种单边性极强的信号,记为 ( 0nnu  ,其数学表 ) 达式为: f )(t = 1 0 t>=0 t<0 单位阶跃信号的图形如图 2.2.1 所示: 图 2.2.1 其对应代码为: clc clear n=10; x=ones(1,n); xn=0:n-1; stem(xn,x,'filled') axis([-5 5 0 2]) 3、离散时间信号的时域运算 信号的时域运算包括信号的平移、反褶、尺度及信号的相加、相乘。 用 MATLAB 的符号运算命令来表示离散世间信号的时域运算,然后用 ezplot 命令 绘制出其结果波形图。 反褶: f )( t (  f t ) 尺度: f )( t  f ( at ), a  0 扩展 01;
位移: f )( t  ( t f 0t ) 0 t 0 ,右移 0 t 0 ,左移 信号相加减: f 1 )( t  f 2 )( t 信号相乘: f 1 )( t  f 2 )( t 三、实现方法 任务 1 1、 )( nx (   0nnA  ) 运用单位冲激信号扩大 A 倍,向右平移 0n 个单位就得到该波形。 其波形如图 3.1.1 图 3.1.1 相关程序如下: clear clc t1=input('起始位置 t1='); t0=input('平移距离 t0=')'; t2=input('终止位置 t2=');
A=input('A='); t=t1:0.01:t2; n=length(t); tt=t1:0.01:t0; n1=length(tt); f=zeros(1,n); f(t0-1)=A; f(n1)=1/0.01; plot(t,f); stem(t,f,'filled'), grid on, axis([t1 t2 -3 title('单位冲激信号')  ( mnu 2 )]  200]) 2、 )( nx  ([ mnuA 1 )  运用单位阶跃信号扩大 A 倍的幅度,结合时域中的位移运算,就可以 得到该波形。其波形图如图 3.2.1 其相应代码如下: 图 3.2.1 clc clear t0=input('起始时刻 t0='); t1=input('第一次跳变时刻 t1='); t2=input('第二次跳变时刻 t2='); t3=input('终止时刻 t3='); A=input('A=');
t=t0:t3; n=length(t); tt=t1:t3; n1=length(tt); x=[zeros(1,n-n1),ones(1,n1)]; ttt=t2:t3; n2=length(ttt); y=[zeros(1,n-n2),ones(1,n2)]; z=A*(x-y); stem(t,z) grid on, title('单位阶跃信号') axis([t0, t3,min(z)-1,max(z)+1]) 任务二 3、 ( kf  )()2 ku f ( k )2 ( kf  ()2 ku  )2 (1)、离散序列反褶函数(fanzhe.m) function[f,k]=fanzhe(f1,k1) f=fliplr(f1); k=-fliplr(k1); (2)、离散序列位移函数(pingyi.m) function [f,k]=pingyi(ff,kk,k0) k=kk+k0; f=ff; (3)、离散序列想成函数(xiangcheng.m) function [f,k]=xiangcheng(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; Return clear clc i=1; for m=-3:4 if m<0 f(i)=m+3; elseif(m==4) f(i)=0; else f(i)=3; end i=i+1; end %f(k) m=-3:4; subplot(331),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:6 if n<0 u(i)=0; else u(i)=1; end i=i+1; end n=-4:6 m=-3:4 %f(k-2)
[y1,k1]=pingyi(f,m,2); subplot(332),stem(k1,y1,'filled'), grid on, axis([min(k1)-1,max(k1)+1,min(y1)-0.5,max(y1)+1]) title('f(k-2)') %f(-k) [y2,k2]=fanzhe(f,m); subplot(333),stem(k2,y2,'filled'), grid on, axis([min(k2)-1,max(k2)+1,min(y2)-1,max(y2)+1]) title('f(-k)') %u(k) [y3,k3]=pingyi(u,n,0); subplot(334),stem(k3,y3,'filled'), grid on, axis([min(k3)-1,max(k3)+1,min(y3)-1,max(y3)+1]) title('u(k)') %u(k-2) [y4,k4]=pingyi(u,n,2); subplot(335),stem(k4,y4,'filled'), grid on, axis([min(k4)-1,max(k4)+1,min(y4)-1,max(y4)+1]) title('u(k-2)') %f(k-2)u(k) [y5,k5]=xiangcheng(y1,y3,k1,k3) subplot(336), stem(k5,y5,'filled'), grid on, title('f(k-2)u(n)') axis([min(k5)-1,max(k5)+1,min(y5)-1,max(y5)+1])
分享到:
收藏