基于Matlab 的连续信号生成及时频域分析
一、实验目的
1、通过实验使学生掌握matlab 表示信号的方法;
2、通过实验掌握基于matlab 的连续时间信号与系统的时频域分析方法。 二、实验要求
1、通过这次实验,学生应能掌握matlab 软件信号表示与系统分析的常用方法。
2、通过实验,学生应能够对连续信号与系统的时频域分析方法有更全面的认识。 三、实验所需环境
1、pc 机;
2、Matlab5.3以上版本软件。 四、实验内容
周期连续信号
1) 正弦信号:产生一个幅度为2,频率为4Hz,相位为π/6的正弦信号
t=0:0.0001:1;
y=2*sin(8*pi*t+pi/6); plot(t,y); xlabel('t'); ylabel('y(t)')
title('?y?òD?o?:y=2sin(8|Dt+|D/6)'
);
2) 周期方波:产生一个幅度为1,基频为3Hz ,占空比为20%的周期方波。
t=0:0.0001:2.5; y=square(6*pi*t,20); plot(t,y);
axis([0,2.5,-1.5,1.5]);
xlabel('t'); ylabel('y(t)') title('·?2¨D?o?');
t
y (t )
正弦信号:y=2sin(8πt+π/6)
t
y (t )
方波信号
3) 阶跃信号;
t=-2:0.0001:6;
y=[zeros(1,20000),ones(1,60001)]; plot(t,x);
axis([-2,6,0,1.5]); xlabel('t'); ylabel('y(t)') title('?×??D?o?');
4) 指数信号:产生一个时间常数为1的指数信号;
t=0:0.0001:50; x=1*exp(-0.1*t); plot(t,x);
axis([0,50,0,1.5]); xlabel('t'); ylabel('x(t)') title('?×??D?o?');
5) 矩形脉冲信号:产生高度为1、宽度为1、关于t=0对称的矩形脉冲信号;产生高度为1、宽度为w 、关于t=0对称的矩形脉冲信号;产生高度为1、宽度为3、延时为2s的矩形脉冲信号。
t=-2:0.01:6;
plot(t,rectpuls(t,1)); axis([-2,6,0,1.5]); xlabel('t'); ylabel('x(t)') title('??D???3?1');
t
y (t )
阶跃信号
t
x (t )
矩形脉冲1
51015202530354045
50
t x (t)
指数信号
t=-2:0.01:6;
plot(t,rectpuls(t,3)); axis([-2,6,0,1.5]); xlabel('t'); ylabel('x(t)')
title('??D???3?2');
t=-2:0.01:6;
plot(t,rectpuls(t-2,3)); axis([-2,6,0,1.5]); xlabel('t'); ylabel('x(t)')
title('??D???3?3');
2、信号的基本运算
1) 信号的尺度变换、翻转、时移(平移)
已知三角波f(t),用MATLAB 画信号f(t)、f(2t)和f(2-2t) 波形,三角波波形自定。
t=-3:0.001:3; ft=tripuls(t,3,1); subplot(3,1,1) plot(t,ft) title('?-èy??2¨') ft1=tripuls(2*t,3,1); subplot(3,1,2) plot(t,ft1)
title('èy??2¨£of(2t)') ft2=tripuls((2-2*t),3,1); subplot(3,1,3); plot(t,ft2);
title('èy??2¨£of(2-2t)');
t
x (t )
矩形脉冲2
t
x (t )
矩形脉冲
3
原三角
波
三角波:
f(2t)
三角波:f(2-2t)
t
f (t )
2) 信号的相加与相乘
相加用算术运算符“+”实现,相乘用数组运算符“.*”实现。
已知信号x(t)=exp(-0.4*t),y(t)=2cos(2pi*t),画出信号x(t)+y(t)、x(t)*y(t)\波形。
t=0:0.001:8; x=exp(-0.4*t); y=2*cos(2*pi*t); ft1=x+y; subplot(2,1,1); plot(t,ft1); title('x(t)+y(t)'); ft2=x.*y; subplot(2,1,2); plot(t,ft2); title('x(t)*y(t)');
1) 离散序列的差分与求和、连续信号的微分与积分
已知三角波f(t),画出其微分与积分的波形,三角波波形自定。
t0=-3;t1=3;dt=0.01; t=t0:dt:t1;
f1=tripuls(t,3,0.5); max_f=max(f1); min_f=min(f1); df=diff(f1)/dt; max_df=max(df); min_df=min(df);
f=inline('tripuls(t,3,0.5)'); for x=1:length(t)
intf(x)=quad(f,-3,t(x)); end
max_if=max(intf); min_if=min(intf);
subplot(3,1,1),plot(t,f1,'linewidth',2); grid;
line([t0 t1],[0 0]);
ylabel('f(t)','rotation',0); axis([t0,t1,min_f-0.2,max_f+0.2]);
subplot(3,1,2),plot(t(1:length(t)-1),df,'linewidth',2); grid;
line([t0 t1],[0 0]);
ylabel('df(t)/dt','rotation',0); axis([t0,t1,min_df-0.2,max_df+0.2]);
x(t)+y(t)
x(t)*y(t)
f(t)
df(t)/dt
∫f(t)dt t
subplot(3,1,3),
plot(t,intf,'linewidth',2);
grid;
line([t0 t1],[0 0]);
ylabel('?òf(t)dt','rotation',0);
axis([t0,t1,min_if-0.2,max_if+0.2])
xlabel('t');
3、连续时间系统分析
1) 连续时间系统零状态响应的求解方法
求系统y”(t)+2y’(t)+100y(t)=10f(t)的零状态响应,已知f(t)=(sin2t) u(t)。
ts=0;
te=5;
dt=0.01;
t=ts:dt:te;
sys=tf([1],[1 2 100]);
f=10*sin(2*pi*t);
y=lsim(sys,f,t);
plot(t,y);
xlabel('t');
ylabel('y(t)');
title('á?D?ê±???μí3á?×′ì??ìó|');
2) 连续时间系统冲激响应和阶跃响应的求解方法
求系统y”(t)+2y’(t)+100y(t)=10f(t)的零状态响应,已知f(t)为单位冲激信号。ts=0;
te=5;
dt=0.01;
t=ts:dt:te;
sys=tf([1],[1 2 100]);
f=10*sin(2*pi*t);
y=impulse(sys,t);
plot(t,y);
xlabel('t');
title('y”(t)+2y’(t)+100y(t)=10f(t)的零状态响应');
t
y”(t)+2y’(t)+100y(t)=10f(t)的零状态响应
t
y
(
t
)
y”(t)+2y’(t)+100y(t)=10f(t)的零状态响应