1MATLAB信号分析处理MATLAB语言2目标•熟悉MATLAB软件的信号处理编程方法和结果的可视化;•了解数字信号处理的计算机仿真方法;•进一步加深对信号与系统的基本原理、方法及应用的理解。MATLAB语言3主要内容•0常用绘图语句•1基本信号的表示•2线性系统的时域分析•3连续时间信号的频域分析•4连续系统的复频域分析•5信号采样与重构MATLAB语言0常用绘图语句常用的MATLAB绘图语句有figure、plot、subplot、stem等,图形修饰语句有title、axis、text等。1.figurefigure有两种用法,只用一句figure命令,会创建一个新的图形窗口,并返回一个整数型的窗口编号。figure(n)表示将第n号图形窗口作为当前的图形窗口,并将其显示在所有窗口的最前面;如果该图形窗口不存在,则新建一个窗口,并赋以编号n。MATLAB语言2.plot线型绘图函数。用法plot(x,y,’s’)。参数x为横轴变量,y为纵轴变量,s控制图形的基本特征如颜色、线型等,可省略,常用方法如下所示。x=0:0.1*pi:2*pi;%定义x向量figure(1);%创建图形窗口,编号1plot(x,sin(x),‘r*-');%画图figure(2);plot(x,sin(x),'bo:');MATLAB语言3.Stem绘制离散序列图,常用格式stem(y)和stem(x,y)分别和相应的plot函数的绘图规则相同,只是用stem命令绘制的是离散序列图。figure(3);stem(x,sin(x),'b.:');4.subplotsubplot(m,n,i)图形显示时分割窗口命令,把一个图形窗口分为m行,n列,m×n个小窗口,并指定第i个小窗口为当前窗口。subplot(2,2,1);%在第2个窗口中作图plot(x,sin(x),'rp');%画一正弦波,红色subplot(2,2,2);stem(x,sin(x),'b.');MATLAB语言5.绘图修饰命令在绘制图形时,我们通常需要为图形添加各种注记以增加可读性。在plot语句后使用title(′标题′)可以在图形上方添加标题,使用xlabel(′标记′)或ylabel(′标记′)为X轴或Y轴添加说明,使用text(X值、Y值、′想加的标示′)可以在图形中任意位置添加标示。figureplot(x,sin(x));%画图title(‘正弦线’);%给图形加标题xlabel('X');ylabel('SIN(X)');text(4,0.5,'注记');MATLAB语言MATLAB语句:x=0:0.1*pi:2*pi;%定义x向量figure(1);%创建一个新的图形窗口,编号为1subplot(2,2,1);%将窗口划分为2行,2列,在第1个窗口中作图plot(x,sin(x));%画图title('正弦线');%给图形加标题subplot(2,2,2);%在第2个窗口中作图plot(x,sin(x),'r');%画一正弦波,红色xlabel('X');MATLAB语言ylabel('SIN(X)');%给y轴加说明subplot(2,2,3);%在第2个窗口中作图%plot(x,sin(x),'--');%画一正弦波,由%变成注释h=stem(x,sin(x),'b.');%绘制蓝色离散序列图subplot(2,2,4);%在第2个窗口中作图plot(x,sin(x),'r+');%画一正弦波,红色破折线%k=stem(x,sin(x));text(4,0.5,'注记');MATLAB语言MATLAB语句执行结果MATLAB语言111基本信号的表示利用Matlab软件信号处理工具箱(SignalProcessingToolbox)中的专用函数产生信号并绘出波形。产生正弦波t=0:0.01:3*pi;y=sin(2*t);plot(t,y)产生矩形脉冲信号t=-3:0.01:3;y=rectpuls(t-1,2);%以t=1为中心,宽度为2plot(t,y)MATLAB语言12产生周期方波t=0:0.01:1;y=square(4*pi*t);plot(t,y)产生周期锯齿波t=0:0.001:2.5;y=sawtooth(2*pi*30*t);plot(t,y)axis([00.2-11])产生指数函数波形x=linspace(0,1);%x=0:0.01:1;y=exp(-x);plot(x,y)MATLAB语言1)三角波或锯齿波发生函数:sawtooth()语法格式:sawtooth(t,width)。产生以2π为周期幅值范围在[-1,+1]之间的三角波或锯齿波。参数t为时间向量;width是[0,1]之间的数,它决定函数在一个周期内上升部分和下降部分的比例。width=0.5产生三角波,width=1产生锯齿波,此时函数可简写为:sawtooth(t)。t=0:0.001:1;x0=sawtooth(2*pi*5*t);%在[0,1]之间产生5个周期的锯齿波figureplot(t,x0)axis([0,1.1,-1.2,1.2])MATLAB语言14产生抽样信号t=-10:0.1:10;%向量t时间范围t=t1:p:t2,p为时间间隔f=sinc(t);%sinc(t)=sin(pi*t)/pi*tplot(t,f);%显示该信号的时域波形title('f(t)=Sa(t)');xlabel('t')axis([-10,10,-0.4,1.1])产生单位阶跃信号定义阶跃函数functionf=heaviside(t)f=(t0);调用阶跃函数t=-1:0.01:3;f=heaviside(t);plot(t,f);axis([-1,3,-0.2,1.2]);1000tttMATLAB语言15产生单位冲激(脉冲)信号定义冲激函数t1=-1;t2=5;dt=0.01;t=t1:dt:t2;n=length(t);x=zeros(1,n);x(1,(-t0-t1)/dt+1)=1/dt;%表示在t=t+t0时刻存在冲激stairs(t,x);axis([t1,t2,0,1.2/dt]);title('单位冲击信号δ(t)')10,0tdtttMATLAB语言例6信号产生举例clearallt=0:0.001:1;x0=sawtooth(2*pi*t);%在[0,0.1]之间产生1个周期的锯齿波figureplot(t,x0)x1=sawtooth(2*pi*5*t);%在[0,1]之间产生5个周期的锯齿波figuresubplot(221)plot(t,x1)x2=sawtooth(2*pi*5*t,0.5);%在[0,1]之间产生5个周期的三角波subplot(222)plot(t,x2)x3=square(2*pi*5*t);%在[0,1]之间产生5个周期的方波subplot(223)plot(t,x3)axis([0,1,-1.2,1.2])MATLAB语言t=-4:0.1:4;x4=sinc(t);%产生抽样函数subplot(224)plot(t,x4)10-100.050.110-100.050.1(a)(b)10-100.050.110.50-0.505(c)(d)-5(a)锯齿波(b)三角波(c)方波(d)抽样函数MATLAB语言2.常用窗的MATLAB函数表示表3常用窗的MATLAB函数表示窗名称MATLAB函数窗名称MATLAB函数矩形窗boxcar(N)哈明窗hamming(N)三角窗triang(N)布莱克曼窗blackman(N)汉宁窗hanning(N)凯塞-贝尔窗kaiser(N,BETA)MATLAB语言说明:除凯塞-贝尔窗外其他窗函数的使用方法相同。函数的参数N是窗长度,调用结果为一个列向量。例产生50点的哈明窗可用MATLAB语言表示为:y=hamming(50);plot(y)。MATLAB语言202连续信号的时域运算与时域变换1.加(减)、乘运算要求二个信号序列长度相同.t=0:0.01:2;f1=exp(-3*t);f2=0.2*sin(4*pi*t);f3=f1+f2;f4=f1.*f2;subplot(2,2,1);plot(t,f1);title('f1(t)');subplot(2,2,2);plot(t,f2);title('f2(t)');subplot(2,2,3);plot(t,f3);title('f1+f2');subplot(2,2,4);plot(t,f4);title('f1*f2');MATLAB语言212.用matlab的符号函数实现信号的反折、移位、尺度变换.由f(t)到f(-at+b)(a0)步骤:f(t)f(tb)f(atb)f(atb)移位尺度反折MATLAB语言22例:已知f(t)=sin(t)/t,试通过反折、移位、尺度变换由f(t)得到f(-2t+3)的波形.symst;f=sin(t)/t;%定义符号函数f(t)=sin(t)/tf1=subs(f,t,t+3);%对f进行移位f2=subs(f1,t,2*t);%对f1进行尺度变换f3=subs(f2,t,-t);%对f2进行反褶subplot(2,2,1);ezplot(f,[-8,8]);gridon;%ezplot是符号函数绘图命令subplot(2,2,2);ezplot(f1,[-8,8]);gridon;subplot(2,2,3);ezplot(f2,[-8,8]);gridon;subplot(2,2,4);ezplot(f3,[-8,8]);gridon;注:也可用一条指令:subs(f,t,-2*t+3)实现f(t)到f(-2t+3)的变换MATLAB语言23例:已知信号用matlab求f(t+2),f(t-2),f(-t),f(2t),-f(t),并绘出时域波形。symstf=sym('(t/2+1)*(heaviside(t+2)-heaviside(t-2))');subplot(2,3,1);ezplot(f,[-3,3]);y1=subs(f,t,t+2);subplot(2,3,2),ezplot(y1,[-5,1]);y2=subs(f,t,t-2);subplot(2,3,3),ezplot(y2,[-1,5]);y3=subs(f,t,-t);subplot(2,3,4),ezplot(y3,[-3,3]);y4=subs(f,t,2*t);subplot(2,3,5),ezplot(y4,[-2,2]);y5=-f;subplot(2,3,6),ezplot(y5,[-3,3])1222tftttMATLAB语言243.卷积运算Y=conv(x,h)实现x,h二个序列的卷积.例:求二个信号的卷积.t11=0;t12=1;t21=0;t22=2;t1=t11:0.001:t12;ft1=2.*rectpuls(t1-0.5,1);subplot(2,2,1);plot(t1,ft1);axis([0304])t2=t21:0.001:t22;ft2=t2;subplot(2,2,2);plot(t2,ft2);axis([0304])t3=t11+t21:0.001:t12+t22;ft3=conv(ft1,ft2)ft3=ft3*0.001subplot(2,2,3);plot(t3,ft3);axis([0304])12,01()0,tftelse2,020,ttftelseMATLAB语言253线性系统的时域分析1.脉冲响应impulse(num,den,T)y=impulse(num,den,T)T:为等间隔的时间向量,指明要计算响应的时间点.2.阶跃响应step(num,