信号与系统仿真实验报告1.实验目的
了解MATLAB的基本使用方法和编程技术,以及Simulink平台的建模与动态仿真方法,进一步加深对课程内容的理解。
2.实验项目
信号的分解与合成,观察Gibbs现象。
信号与系统的时域分析,即卷积分、卷积和的运算与仿真。
信号的频谱分析,观察信号的频谱波形。
系统函数的形式转换。
用Simulink平台对系统进行建模和动态仿真。
3.实验内容及结果
3.1以周期为T,脉冲宽度为2T1的周期性矩形脉冲为例研究Gibbs现象。
已知周期方波信号的相关参数为:x(t)=∑ak*exp(jkω),ω=2*π/T,a0=2*T1/T,ak=sin(kωT1)/k π。画出x(t)的波形图(分别取m=1,3,7,19,79,T=4T1),观察Gibbs现象。
m=1;
T1=4; T=4*T1;k=-m:m;
w0=2*pi/T; a0=2*T1/T;
ak=sin(k*w0*T1)./(k*pi);
ak(m+1)=a0;
t=0:0.1:40;
x=ak*exp(j*k'*w0*t);
plot(t,real(x));
3.2求卷积并画图
(1)已知:x1(t)=u(t-1)-u(t-2), x2(t)=u(t-2)-u(t-3)求:y(t)=x1(t)*x2(t)并画出其波形。
t1=1:0.01:2;
f1=ones(size(t1));
f1(1)=0;
f1(101)=0;
t2=2:0.01:3;
f2=ones(size(t2));
f2(1)=0;
f2(101)=0;
c=conv(f1,f2)/100;
t3=3:0.01:5;
subplot(311);
plot(t1,f1);axis([0 6 0 2]);
subplot(312);
plot(t2,f2);axis([0 6 0 2]);
subplot(313);
plot(t3,c);axis([0 6 0 2]);
(2)已知某离散系统的输入和冲击响应分别为:x[n]=[1,4,3,5,1,2,3,5], h[n]=[4,2,4,0,4,2].求系统的零状态响应,并绘制系统的响应图。
x=[1 4 3 5 1 2 3 5];
nx=-4:3;
h=[4 2 4 0 4 2];
nh=-3:2; y=conv(x,h);
ny1=nx(1)+nh(1);
ny2=nx(length(nx))+nh(length(nh));
ny=[ny1:ny2];
subplot(311);
stem(nx,x);
axis([-5 4 0 6]);
ylabel('输入')
subplot(312);
stem(nh,h);
axis([-4 3 0 5]);
ylabel('冲击效应')
subplot(313);
stem(ny,y);
axis([-9 7 0 70]);
ylabel('输出');
xlabel('n');
3.3 求频谱并画图
(1) 门函数脉冲信号x1(t)=u(t+0.5)-u(t-0.5)
N=128;T=1;
t=linspace(-T,T,N);
x=(t>=-0.5)-(t>=0.5);
dt=t(2)-t(1);
f=1/dt;
X=fft(x);
F=X(1:N/2+1);
f=f*(0:N/2)/N;
plot(f,F)
xlabel('Frequency');
Ylabel('|F(k)|');
(2)三角脉冲函数x2(t)= {1-|t| |t|≤1; 0 |t|>1}
N=200; T=1;
t=linspace(0,T,N);
if abs(t)<=1
x=1-abs(t);
else
x=0;
end
dt=t(2)-t(1);
f=1/dt;
X=fft(x);
F=X(1:N/2+1);
f=f*(0:N/2)/N;
plot(f,abs(F),'-*')
xlabel('Frequency');
Ylabel('|F(k)|');
(3) 单边指数函数x3(t)=exp(-t)u(t)
程序及仿真结果如下:
syms t; ut=sym('heaviside(t)');
ft=exp(-t)*ut; fw=fourier(ft);
fwp=abs(fw); ezplot(fwp); axis([-10 10 0 1.2]);
(4)高斯信号x4(t)=exp(-t*t)
程序及仿真结果如下:
syms t;
ft=exp(-t.^2);
fw=fourier(ft);
ezplot(fw);
3.4 求系统函数转换
(1)零极点形式转换成多项式形式。H(s)=
2( s + 1)
--------------------------
(s +2)( s+3)( s + 4)
程序及结果如下:
z=-1;
p=[-2 -3 -4];
k=2;
[num,den]=zp2tf(z,p,k);
printsys(num,den,'s');
(2)多项式转换成零极点形式。H(s)=
2s + 10
---------------------------
s^3 +8s^2+19 s+12
程序及仿真结果如下:
num=[2 10];
den=[1 8 19 12];
printsys(num,den,'s');
z,p,k=tf2zp(num,den)
(3)用卷积法求多项式形式的系统函数。
H(s)=
(s + 8)(s^2+2s+5)
-------------------------------
(2s+3)(3s^2 +4 s+13)
程序及仿真结果如下:
f1=[1 8];
f2=[1 2 5];
f3=[2 3];
f4=[3 4 13];
[num]=conv(f1,f2);
[den]=conv(f3,f4);
printsys(num,den,'s');