内容来自:甜梦文库
更多"MATLAB 实验 1 信号的时域分析"相关资料请点击这里
实验一
信号时域分析的 Matlab 实现
一. 实验目的
1.掌握函数的向量表示法
2.掌握函数的符号运算表示法,实现连续信号
的时域运算和变换
二. 实验原理 1.向量表示法 Matlab 的信号处理工具箱有大量的函数 可用于
产生信号,函数中大部分要求用
矢量来表示时间。如:t=0:0.005:1;
表明该矢量抽样频率为 200Hz。
Matlab 可以精确表示离散时间信号, 对连续时间信号只能近似表示。因此
应选择足够小的抽样间隔 Ts,以保证
反映信号的全部细节。
2. 符号运算表示法
用符号运算可以较快地实现连续信号 的时域运算和变换。 例:a.相加
s=symadd(f1,f2) ezplot(s) 以上是用 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 的反褶及其结果的可视化。
e.尺度变换 y=subs(f,t,a*t)
ezplot(y)
以上是用 Matlab 的符号运算命令
来实现连续信号 f 的尺度变换及其
结果的可视化。
三.实验演示
1 连续信号
(1)指数信号
f (t ) ? Ae? t
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]);
(2) 正弦信号
f (t ) ? A sin(?t ? ? )
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)抽样信号
f (t ) ? Sa(t ) ?
sin(t ) t
x=linspace(-20,20); y=sinc(x/pi); plot(x,y) grid; axis([-21 21 -0.5
1.1]);
(4)矩形脉冲
f (t ) ? G? (t ) ? A[? (t ? ? 0 ) ? ? (t ? ? 1 )]
? 0 ??1 ? 0
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)阶跃信号
?1(t ? 0) ? (t ) ? ? ?0(t ? 0)
function f=Heaviside(t) f=(t>0)
t=-1:0.001:3; ft=Heaviside(t); plot(t,ft); grid; axis([-1 3 -0.1
1.1]);
(7)复指数信号的时域波形
2 f (t ) ? e ?0.1t sin( t ) 3
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: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)指数
序列
y[k ] ? Aa k
k=-10:10; A=1; a=-0.6; yk=A*a.^k; Stem(k,yk)
(2)正弦序列
y[k ] ? A sin(k? ? ? )
k=0:40; A=2; yk=A*sin(pi/6*k); Stem(k,yk,’filled’);
(3)单位脉冲序列
y[k ] ? ? [k ]
方法 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)单位脉冲序列
y[k ] ? ? [k ]
方法 3: function[x,k]=impseq(k0,k1,k2) %产生 x[k]=delta(k-
k0);k1<=k0<=k2 k=[k1:k2];x=[(k-k0)==0] 例: [delta,k]=impseq(10,-
50,50); Stem(k,delta);
(3)单位阶跃序列
y[k ] ? u[k ]
方法 1: k=-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)单位阶跃序列
y[k ] ? u[k ]
方法 3: function[x,k]=stepseq(k0,k1,k2) %产生 x[k]=u(k-k0);k1<=k0<=k2
k=[k1:k2];x=[(k-k0)>=0]; 例: [uk,k]=stepseq(10,-50,50); stem(k,uk)
3 信号的基本运算
设
t f (t ) ? (1 ? ) ? [? (t ? 2) ? ? (t ? 2)] 2
,求出
f (t ? 2),f (t ? 2),f (?t ),f (2t )
并绘画出时域波形 syms t; f=sym('(t/2+1)*(heaviside(t+2)-heaviside(t-
2))'); subplot(2,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;
内容来自:甜梦文库更多"MATLAB 实验 1 信号的时域分析"相关资料请点击这里