1、实验一信号时域分析的Matlab实现,一. 实验目的 1.掌握函数的向量表示法 2.掌握函数的符号运算表示法,实现连续信号 的时域运算和变换,二. 实验原理 1.向量表示法 Matlab的信号处理工具箱有大量的函数 可用于产生信号,函数中大部分要求用 矢量来表示时间。如:t0:0.005:1; 表明该矢量抽样频率为200Hz。,Matlab可以精确表示离散时间信号, 对连续时间信号只能近似表示。因此 应选择足够小的抽样间隔Ts,以保证 反映信号的全部细节。,2. 符号运算表示法 用符号运算可以较快地实现连续信号 的时域运算和变换。 例:a.相加 s=symadd(f1,f2) ezplot(s
2、) 以上是用Matlab的符号运算命令来表示 两连续信号的相加,然后用ezplot命令 绘制出其结果波形图。,b.相乘 w=symmul(f1,f2) ezplot(w) 以上是用Matlab的符号运算命令 来表示两连续信号的相乘,然后 用ezplot命令绘制出其结果波形图。,c.时移 y=subs(f,t,t-t0) ezplot(y) 以上是用Matlab的符号运算命令 来实现连续信号的平移及其结果 的可视化,subs命令将连续时间 信号f中的时间变量t用t-t0替换。,d.反褶 y=subs(f,t,-t) ezplot(y) 以上是用Matlab的符号运算命令 来实现连续信号f的反褶及
3、其结果的可视化。,e.尺度变换 y=subs(f,t,a*t) ezplot(y) 以上是用Matlab的符号运算命令 来实现连续信号f的尺度变换及其 结果的可视化。,三.实验演示,(1)指数信号,A=1; a=-0.4; t=0:0.01:10; ft=A*exp(a*t); plot(t,ft); grid; axis(0 10 -0.1 1.1);,1 连续信号,(2) 正弦信号,A=1; w0=2*pi; phi=pi/6; t=0:0.01:3; ft=A*sin(w0*t+phi); plot(t,ft); grid; axis(0 3 -1.1 1.1);,(3)抽样信号,x=l
4、inspace(-20,20); y=sinc(x/pi); plot(x,y) grid; axis(-21 21 -0.5 1.1);,(4)矩形脉冲,t=0:0.001:4; T=1; ft=rectpuls(t-2*T,2*T); plot(t,ft); grid; axis(-1 5 -0.1 1.1);,(5)三角波信号 t=-3:0.001:3; ft=tripuls(t,4,0.5); plot(t,ft); grid; axis(-4 4 -0.1 1.1);,(6)阶跃信号,function f=Heaviside(t) f=(t0)t=-1:0.001:3; ft=Hea
5、viside(t); plot(t,ft); grid; axis(-1 3 -0.1 1.1);,(7)复指数信号的时域波形,t=0:0.1:60; f=exp(-0.1*t).*sin(2/3*t); plot(t,f); grid; ylabel(f(t); xlabel(Time(sec); axis(0 60 -1 1);,(8)加如随机噪声的正弦波t=(0:0.001:50); y=sin(2*pi*50*t); s=y+randn(size(t); Subplot(211);plot(t(1:100),y(1:100) Subplot(212);plot(t(1:100),s(1
6、:100),(9)周期矩形波t=(0:0.0001:5); y=A*square(2*pi*t,20); plot(t,y); axis(0 5 -1.5 1.5),(10)周期锯齿波t=(0:0.001:2.5); y=sawtooth(2*pi*30*t); plot(t,y); axis(0 0.2 -1 1),2 离散信号,与连续信号用plot绘制图形不同,离散信号用stem输出序列图形。,(1)指数序列,k=-10:10; A=1; a=-0.6; yk=A*a.k; Stem(k,yk),(2)正弦序列,k=0:40; A=2; yk=A*sin(pi/6*k); Stem(k,y
7、k,filled);,(3)单位脉冲序列,方法1: k=-50:50; delta=zeros(1,50),1,zeros(1,50); Stem(k,delta),方法2: function x=dwxl(k) x=k=0 例: k=-40:40; x=dwxl(k); Stem(k,x);,(3)单位脉冲序列,方法3: functionx,k=impseq(k0,k1,k2) %产生xk=delta(k-k0);k1=k0=k2 k=k1:k2;x=(k-k0)=0 例:delta,k=impseq(10,-50,50); Stem(k,delta);,(3)单位阶跃序列,方法1: k=-
8、50:50; uk=zeros(1,50),ones(1,51); Stem(k,uk),方法2: function x=jyxl(k) x=k=0 例: k=-40:40; x=jyxl(k); stem(k,x);,(3)单位阶跃序列,方法3: functionx,k=stepseq(k0,k1,k2) %产生xk=u(k-k0);k1=0; 例:uk,k=stepseq(10,-50,50); stem(k,uk),3 信号的基本运算,设,,求出,并绘画出时域波形 syms t; f=sym(t/2+1)*(heaviside(t+2)-heaviside(t-2); subplot(2
9、,3,1),ezplot(f,-3,3); title(f(t); grid; y1=subs(f,t,t+2); subplot(2,3,2),ezplot(y1,-5,1); title(f(t+2); grid; y2=subs(f,t,t-2); subplot(2,3,3),ezplot(y2,-1,5); title(f(t-2); grid; y3=subs(f,t,-t); subplot(2,3,4),ezplot(y3,-3,3); title(f(-2t); grid; y4=subs(f,t,2*t); subplot(2,3,5),ezplot(y4,-2,2); title(f(2t); grid;,