?y(1)??y(t)??y(2)??y'(t)?????。n与m可以不等。 Y?????????(n?1)?y(n)???y(t)? (2)运用数学中的变量替换y(1) = y(t),y(2) = y’(t),…,y(n) = y(n-1)(t)把高阶(大于2阶)的方程(组)写成一阶微分方程组:
y(2)?y(1)???y'????y(2)??y?????y(3)??????? Y'???????????(n)????y(n)??y??F(y(1),y(2),…,y(n),f(t))?(3)根据(1)与(2)的结果,编写能计算导数的M函数文件odefile
(4)将文件odefile与初始条件传递给求解器solver中的一个,运行后就可得到ODE的、在指定时间区间上的解列向量y(其中包含y及不同阶的导数)。
例:已知描述某二阶线性时不变连续时间系统的动态方程为:
y??(t)?6y?(t)?8y(t)?f(t),t?0
初始条件y(0)=1,y’(0)=2,输入信号f(t)=sin(t)u(t),求系统的全响应。 解:设Y = [y(t); y’(t)]T Y(1) = y(t); Y(2) = y’(t) Y’(1) = y’(t) = Y(2)
Y’(2) = y”(t) = sin(t) -6y’(t) -8y(t) = sin(t) -6Y(2) -8Y(1) 因此
Y(2)? Y'??(2)Y?sint(?)Y6?? ?8?(1)在当前目录下建立函数fun1.m function dY = fun1(t,Y)
dY = [Y(2);
sin(t) - 6*Y(2) - 8*Y(1)];
在Malab命令行中 tspan = [0, 20]; Y0 = [1;2]
[t,yy] = ode45(@fun1, tspan, Y0); plot(t,yy(:,1))
2.4 实验内容
1、一系统满足微分方程
y''(t)?5y'(t)?6y(t)?u(t)?u(t?1)
(1)求出该系统的零状态响应的解析表达式yzs(t),并用向量表示法绘制响应曲线。
(2)用lsim求出该系统的零状态响应;利用(1)所得结果画出该系统的零状态响应。比较二者是否相同。
2、如图所示电路,其中L?1H,C?1F,R1?1?,R2?2?,f(t)是输入信号,y(t)是输出响应。
(1)建立描述该系统的微分方程; (2)用impulse函数求系统的冲激响应; (3)用step函数求系统的阶跃响应。
3、下列系统分别为一阶、二阶和三阶BW模拟低通滤波器,用impulse函数分别求出各系统的冲激响应,并绘制单位冲激响应曲线,比较它们的特征。
(1)y'(t)?y(t)?f(t)
(2)y''(t)?2y'(t)?y(t)?f(t) (3)y'''(t)?2y''(t)?2y'(t)?y(t)?f(t)
求解线性常微分方程:零输入响应和零状态响应。
实验三 连续信号、系统的频域分析
3.1 实验目的
1、理解频域分析的MATLAB实现方法。 2、求解系统的频率响应。 3、理解函数的拉氏变换.
3.2 实验时数: 2学时 3.3 实验相关知识:
3.3.1 周期信号的傅里叶级数计算
设周期信号x(t)的基本周期为T1,且满足狄里克利条件,则其指数形式的傅里叶级数系数Fn为:
Fn?1T12?jn?1tf(t)edt
T1??T12其中n为-∞,∞之间的整数;角频率ω1=2π/T1。
因为计算机不能计算无穷多个系数,所以我们假设需要计算的谐波次数为N,则总的系数个数为2N+1个。在确定了信号的周期T1和时间步长dt之后,对某一个系数,上述系数的积分公式可以近似为:
1T121M?jn?1tFn??f(t)edt??f(tk)e?jn?1tkdtT1?T12T1k?1??f(t1)f(t2)?jn?1t1f(tM)???e?
e?jn?1t2e?jn?1tM???dt/T1T对于全部需要的2N+1个系数,上面的计算可以按照矩阵运算实现。需要强调的是,时间变量的变化步长dt的大小对傅里叶级数系数的计算精度的影响非常大,dt越小,精度越高,但是,计算机计算所花的时间越长。
例3-1:求如图所示方波信号的幅度谱,并画出频谱图。(A=1,τ=0.5,T1=2)
f(t)A-T1-T1/2-τ/2τ/2T1/2T1t
MATLAB实现傅里叶级数计算的程序如下: dt = 0.01; T1 = 2; w1 = 2*pi/T1; t = -T1/2:dt:T1/2; tau = 0.5; A = 1;
f = A*(u(t + tau/2) - u(t - tau/2)); subplot(2,1,1) plot(t,f)
axis([-T1/2, T1/2, -0.1, 1.1]) title('f(t)时域波形') N = 10; n = -N:N;
Fn = f*exp(-j*t'*w1*n)*dt/T1; subplot(2,1,2) stem(n,Fn) hold on dw = 0.01;
w = -N*w1:dw:N*w1;
F = A*tau/T1 * sinc(w*tau/2/pi); plot(w/w1,F,'--') title('傅里叶级数F_n')
3.3.2 周期信号的合成以及Gibbs现象 从傅里叶级数的合成式(Synthesis equation)
f(t)?n????Fen?jn?1t
可以看出,用无穷多个不同频率和不同振幅的周期复指数信号可以合成一个周期信号。然而,我们无法用计算机实现对无穷多个周期复指数信号的合成。但是,用有限项来合成却是可行的,在实际应用中,多半也就是这么做的。然而,这样做的一个必然结果,就是引入了误差。
如果一个周期信号在一个周期有内断点存在,那么,引入的误差将除了产生纹波之外,还将在断点处产生幅度大约为9%的过冲(Overshot),这种现象被称为吉伯斯现象(Gibbs phenomenon)。
为了能够观察到合成信号与原信号的不同以及Gibbs现象,我们可以利用前面已经计算出的傅里叶级数的系数,计算出截短的傅里叶级数:
?(t)?fn??N?NFnejn?1t
观察吉伯斯现象的最好的周期信号就是周期方波信号,这种信号在一个周期