Advertisement

matlab求解系统响应filter,信号与系统MATLAB实验(教师版)

阅读量:

例2-6已知 y(k)?y(k?1)?0.9y(k?2))?f(k) 求单位响应。

a=[1,-1,0.9]; b=[1]; impz(b,a) impz(b,a,60) impz(b,a,-10:40)

4. 离散系统的零状态响应

MATLAB实现了求解离散时间系统零状态响应数值解的filter函数工具。其调用方式为filter(b, a, x)。其中b和a分别为表示离散系统的系数向量;x代表输入序列的非零采样点行向量;输出序列与输入序列具有相同的索引位置。例如:已知差分方程 y(k) - 0.25y(k-1) - 0.5y(k-2) = f(k) - f(k-1) ,其中 f(k) = \left(\frac{1}{2}\right)^k \cdot \delta(k) 。求其零状态响应并计算区间0 \leq k \leq 20的结果。定义系数向量a = [1, -0.25, 0.5]b = [1, 1];时间步长t = 0:20;输入信号x = \left(\frac{1}{2}\right)^t;运行代码[y] = filter(b, a, x)以获得输出结果并绘制时域波形图(如图所示)。

title('输入序列') subplot(2,1,2) stem(t,y)

title('响应序列') 三、上机实验内容 1.验证实验原理中程序

2.已知2y(k)?2y(k?1)?y(k?2)?f(k)?3f(k?1)?2f(k?2),画单位响应波形。 3.已知y(k)?y(k?1)?0.25y(k?2)?f(k),输入f(t)??(k),画输出波形,范围0~15。

12k

13

实验三 连续时间LTI系统的时域分析

一、实验目的

  1. 掌握利用MATLAB进行连续系统零状态响应的计算;
  2. 掌握利用MATLAB分析连续系统冲激和阶跃响应的行为;
  3. 熟练运用MATLAB软件对连续信号卷积过程进行数值模拟与分析;
    二、实验原理

1.连续时间系统零状态响应的数值计算

我们知道,LTI连续系统可用如下所示的线性常系数微分方程来描述,

?ayii?0N(i)(t)??bjf(j)(t)

在 MATLAB 环境中(或:在 MATLAB 中),控制系统工具箱提供了一个用于求解零初始条件微分方程数值解的函数 lsim;该函数具有求解零初始条件微分方程数值解功能。

y=lsim(sys,f,t)

在式()中,
t 用于表示计算系统响应的抽样点向量,
f 代表系统输入信号向量,
sys 是 LTI 系统模型,
它被用来建立数学模型来描述系统的动态行为,
包括微分方程、差分方程或状态方程。
此外,
其调用格式

sys=tf(b,a)

式中,b和a分别是微分方程的右端和左端系数向量。例如,对于以下方程:

a3y'''(t)?a2y''(t)?a1y'(t)?a0y(t)?b3f'''(t)?b2f''(t)?b1f'(t)?b0f(t)

可用a?[a3,a2,a1,a0];b?[b3,b2,b1,b0]; sys?tf(b,a) 获得其LTI模型。

特别提示:在微分方程的左边或右边表达式中存在缺失项时,在向量a或b中相应位置应设为零值。如果不跳过不写这些内容,则会导致错误发生。

例3-1 已知某LTI系统的微分方程为 y’’(t)+ 2y’(t)+100y(t)=f(t)

其中,y(0)?y(0)?0,f(t)?10sin(2?t),求系统的输出y(t).

f=10sin(2pi*t); y=lsim(sys,f,t); plot(t,y);

xlabel('Time(sec)'); ylabel('y(t)');

2.在连续时间系统中对冲激与阶跃响应进行求解。通过MATLAB软件平台,在连续线性时不変(LTI)系统中对冲激与阶躍反應進行計算。其調用格式為

'14

y=impluse(sys,t) y=step(sys,t)

式中,t表示计算系统响应的抽样点向量,sys是LTI系统模型。

例3-2已知某LTI系统的微分方程为 y’’(t)+ 2y’(t)+100y(t)=10f(t)

求系统的冲激响应和阶跃响应的波形. 解:ts=0;te=5;dt=0.01; sys=tf([10],[1,2,100]);

t=ts:dt:te;

h=impulse(sys,t); figure; plot(t,h);

xlabel('Time(sec)'); ylabel('h(t)');

g=step(sys,t); figure; plot(t,g);

xlabel('Time(sec)');

ylabel('g(t)');

3. 用MATLAB实现连续时间信号的卷积

信号的卷积运算主要包含符号算法与数值算法,在本研究中采用数值计算法通过调用MATLAB中的conv()函数来近似计算信号的卷积积分。连续信号在时域上的卷积积分定义为:对于任意时间点t,在区间(-∞, +∞)内进行∫_{-∞}^{+∞} f₁(τ)f₂(t−τ)dτ的操作。

如果对连续信号 f₁(t) 和 f₂(t) 进行均匀采样,则这些信号将分别转换为离散时间信号序列 F₁[m] 和 F₂[m] ,其中 m 为整数。当采样间隔足够小时,则 F₁[m] 和 F₂[m] 将趋近于原来的连续时间信号 f₁(t) 和 f₂(t),从而我们可以用以下公式来表示连续时间信号卷积积分:

f(t)?f1(t)?f2(t)??f1(?)f2(t??)d?????lim??0m????f(m?)?f1?

2(t?m?)??采用数值计算时,只求当t?n?时卷积积分f(t)的值f(n?),其中,n为整数,既

f(n?)?

m?????f(m?)?f1m????2(n??m?)??

???f1(m?)?f2[(n?m)?]其中,

m????f(m?)?f1?2[(n?m)?]实际就是离散序列f1(m?)和f2(m?)的卷积和。当?足

15

够小时,序列f(n?)就是连续信号f(t)的数值近似,既 f(t)?f(n?)??[f1(n)?f2(n)]

该式表明,在连续信号f1(t)和f2(t)的情况下,其卷积运算可以通过对各自进行采样后得到的离散时间序列进行卷积运算,并将结果乘以采样间隔来实现。当采样间隔越小时,则所造成的误差也会相应减小。

例3-3用数值计算法求f1(t)?u(t)?u(t?2)与f2(t)?e?3tu(t)的卷积积分。

f1=Heaviside(t)-Heaviside(t-2); f2=exp(-3*t).*Heaviside(t);

f=conv(f1,f2)*dt; n=length(f); tt=(0:n-1)*dt-2; subplot(221), plot(t,f1), grid on;

axis([-1,2.5,-0.2,1.2]); title('f1(t)'); xlabel('t') subplot(222), plot(t,f2), grid on;

axis([-1,2.5,-0.2,1.2]); title('f2(t)'); xlabel('t') subplot(212), plot(tt,f), grid on; title('f(t)=f1(t)*f2(t)'); xlabel('t')

考虑到f1(t)和f2(t)均起始于t=-1的时间范围内,则它们的卷积运算结果时间范围因此延伸至t=-2。其中增量仍保持为取样间隔。其计算公式来源于tt=(0:n-1)*dt-2。

1. 验证实验原理中所述的相关程序

已知表征系统的微分方程及激励信号f(t)如后所示:y''(t)+4y'(t)+4y(t)=f'(t)+3f(t),其中f(t)=e^{-t}u(t)。试运用解析法求解系统的零状态响应y zs(t),并同时运用MATLAB绘制系统零状态响应的时域仿真波形图,并与计算得到的结果进行对比验证

3.已知描述系统动态特性的微分方程如下所示,请利用MATLAB计算系统在时间区间[0,10]秒内冲激响应与阶跃响应的数值解,并绘制其时域波形图

y’’(t)+3y’(t)+2y(t)=f(t)

y’’(t)+ 2y’(t)+2y(t)=f’(t)

4.画出信号卷积积分f1(t)?f2(t)的波形,f1(t)?f2(t)?u(t)?u(t?1)

16

全部评论 (0)

还没有任何评论哟~