您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 管理学资料 > 常用信号的MATLAB表示
5常用信号的MATLAB表示5.1单位冲激函数、单位冲激序列示例7:t=-5:0.01:5;y=(t==0);subplot(121);plot(t,y,'r');n=-5:5;x=(n==0);subplot(122);stem(n,x);图5运行结果如图5所示。程序说明:(1)由n=-5:5得到一个1×11数组n;而在x=(n==0)中,n==0是一个向量运算,即向量n中的每一个元素与0比较是否相等,其比较结果0或1放在x中。这样得到的向量x也是1×11数组,且正好就是单位冲激序列。(2)在MATLAB中,任何向量x的下标是从1开始的,不能取零或负值,而x(n)中的时间变量n则不此受限制。因此向量x的下标与时间变量n是两个概念,如本例中向量x(n)的下标是从1到11,而时间变量n是从-5到5。所以必须用一个与向量x等长的定位时间变量n,以及向量x,才能完整地表示序列x(n)。在信号的表示和运算中,这一点请务必注意;只有当序列x(n)的时间变量正好是从1开始时,才能省去时间变量n,因为此时向量的下标与时间变量相同。(3)单位冲激函数的实现方法实际上与单位冲激序列是完全相同的,都是用序列表示。只不过表示连续时间信号的序列中两相邻元素所对应的时间间隔更小,如本例中t的间隔为0.01,而表示离散时间信号的序列中两相邻元素所对应的时间间隔一般为1。由于单位冲激序列在信号与系统中经常使用,我们专门编制一个函数文件delta.m,在后面的实验部分直接调用该函数即可产生需要的波形。%delta.mfunction[x,n]=delta(n1,n2,k)%产生冲激序列δ(n-k),其中n1=n=n2,n1=k=n2ifnargin~=3disp('输入不正确,输入参数要有三个!');return;elseif((kn1)|(kn2)|(n1n2))error('输入不正确,输入参数要应满足n1=k=n2!')endn=n1:n2;x=((n-k)==0);5.2单位阶跃函数、单位阶跃序列只要将前面冲激函数(示例7)中的关系运算“==”改为“=”,就可得到单位阶跃函数、单位冲激序列,如图6所示。图6我们编制了函数文件stepseq.m来生成单位阶跃序列。function[x,n]=stepseq(n1,n2,n0)%产生序列u(n-n0),其中n1=n=n2,n1=n0=n2ifnargin~=3disp('输入不正确,输入参数要有三个!');return;elseif((n0n1)|(n0n2)|(n1n2))error('输入不正确,输入参数要应满足n1=k=n2!')endn=n1:n2;x=((n-n0)=0);示例8:绘图表示(1)门函数;(2)序列。t=-3:0.05:3;z1=((t+1)=0);z2=((t-1)=0);g=z1-z2;%门函数figure;subplot(221)plot(t,g,'r');axis([-3301.1])x1=stepseq(-5,10,-3);%调用函数stepseqx2=stepseq(-5,10,5);%调用函数stepseqx=x1-x2;n=-5:10;subplot(222)stem(n,x);axis([-5,10,0,1.1])运行结果如图7所示。图75.3其他典型的信号1.实指数信号其MATLAB实现为:n=n1:n2;x=a.^n;1.复指数信号其MATLAB实现为:n=n1:n2;x=exp(sigma+jw)*n;1.正(余)弦信号其MATLAB实现为:n=n1:n2;x=cos(w*n+sita)5.4工具箱中的信号产生函数利用MATLAB信号处理工具箱提供的一些函数,可以很方便地产生三角波、方波等函数波形。1.周期性三角波或锯齿波函数sawtooth调用格式为:x=sawtooth(t,width)功能:产生一个周期为2π、幅度在-1到+1之间的周期性三角波信号。其中width表示最大幅度出现的位置:即在一个周期内,信号从t=0到width×2π时函数值从-1到+1线性增加,而从width×2π到2π又是从+1到-1线性下降。width取值在0~1之间。若x=sawtooth(Ωt,width),则对应的周期为2π/Ω。示例9:产生周期为0.2的三角波,width取值分别为0、1、0.5。td=1/100000;%td为时间间隔t=0:td:1;x1=sawtooth(2*pi*5*t,0);x2=sawtooth(2*pi*5*t,1);x3=sawtooth(2*pi*5*t,0.5);subplot(311);plot(t,x1);subplot(312);plot(t,x2);subplot(313);plot(t,x3);运行结果如图8所示。图81.周期性方波信号square调用格式为:x=square(t,duty)功能:产生一个周期为2π、幅度为±1的周期性方波信号。其中duty表示占空比,即在信号的一个周期中正值所占的百分比。例如产生频率为40Hz、占空比为75%的周期性方波所调用的语句为x=square(2*pi*40*t,75);1.(非周期)三角波脉冲信号tripuls调用格式为:x=tripuls(t,width,skew)功能:产生一个最大幅度为1、宽度为width、斜率为skew的三角脉冲信号。该函数横坐标范围由向量t决定,其三角波形是以t=0为中心向左右各展开width/2的范围;斜率skew在-1到+1之间取值,它决定了最大幅度1所对应的横坐标位置:width/2×skew。示例10:仔细观察由下面代码产生的图9中3个三角波信号之间的区别,自己对tripuls函数的使用做一个总结。t=-3:0.001:3;x1=tripuls(t,4,0);subplot(131);plot(t,x1);axis([-4401]);gridt=-6:0.001:6;x2=tripuls(t,4,0.5);subplot(132);plot(t,x2);axis([-4401]);gridx3=tripuls(t+2,4,0.5);subplot(133);plot(t,x3);axis([-4401]);grid图91.(非周期)矩形脉冲信号rectpuls调用格式为:x=rectpuls(t,width)功能:产生一个幅度为1、宽度为width、以t=0为中心左右对称的矩形波信号。该函数横坐标范围由向量t决定,其矩形波形是以t=0为中心向左右各展开width/2的范围。width的默认值为1。示例11:生成幅度为2,宽度T=4、中心在t=0的矩形波x(t)以及x(t-T/2).t=-4:0.0001:4;T=4;x1=2*rectpuls(t,T);subplot(121);plot(t,x1);axis([-4602.2])grid;x2=2*rectpuls(t-T/2,T);subplot(122);plot(t,x2);axis([-4602.2])grid;运行结果如图10所示。图10
本文标题:常用信号的MATLAB表示
链接地址:https://www.777doc.com/doc-2451260 .html