系统的单位冲激响应

 

01 激响应


一、前言

  第三次作业中, 第二个题目是对RLC谐振电路进行系统仿真。 得到不同串联电阻下, 电路的单位冲激响应信号。  下面应用 scipy 软件包中的 impulse 函数, 来求取该线性电路的单位冲激响应。

G2M1741317967_1920_1080.MP4|_-2

二、impulse

  根据 impulse 函数的说明,  使用它需要输入系统模型参数。 可以使用四种系统模型,  其中第二种, 即系统函数的分子、分母系数最为简单, 可以直接通过描述系统的微分方程来得到。   下面的几个参数分别给出了系统的初始条件以及时间参数。  具体的函数使用方法在这里就不展开了。 大家可以根据 后面给出的程序来进行琢磨。

G6M1741318205_1920_1080.MP4|_-6

三、建立系统模型

  根据题目内容,    按照其中微分方程,  写出拉普拉斯变换之后对应的代数方程。 这一点在现在教学课程还没有讲到, 可以先将它看成算子方法的一个扩展。  也就是将微分使用变量s来替换。 这样便可以得到输出与输入的比值,   得到的这个比值实际上就是表述系统的系统函数。 在这里,我们关心的是 SCIPY 软件包中所需要的系统描述中的一种,  也就是系统函数有理分式的分子和分母, 利用它, 便可以调用 impulse 函数, 得到系统的单位冲激响应了。

G9M1741316292_1920_1080.MP4|_-9

五、仿真结果

  运行程序之后, 可以得到 0 到 50 秒之内的电路仿真输出信号 。 可以看到, 随着谐振电路中的串联电阻的增加, 输出信号震荡减小。   当电阻等于0, 电路的单位冲激响应为等幅正弦震荡信号。  当串联电阻等于0.2 欧姆的时候, 输出为指数衰减震荡信号。  当串联电阻为 2欧姆的时候, 输出信号中不再震荡,  当电阻等于5欧姆的时候, 输出信号进一步减小。
G6M1741316942_1920_1080.MP4|_-6

▲ 图1.5.1 仿真结果

▲ 图1.5.1 仿真结果

from headm import *

import scipy

L = 1
C = 1
Rdim = [0, 0.2, 2, 5]

for R in Rdim:
    num = [1/(L*C)]
    den = [1, R/(L*C), 1/(L*C)]
    system = (num, den)

    t = linspace(0, 50, 5000)
    tt,y = scipy.signal.impulse(system, T=t)
    plt.plot(t, y, lw=3, label='R=%f'%R)

plt.xlabel("Time(s)", color="steelblue", fontsize=16)
plt.ylabel("Vc(t)", color="steelblue", fontsize=16)
plt.grid(True)
plt.legend(loc='upper right', fontsize=24)
plt.tight_layout()
plt.show()

  不同的电阻, 震荡周期都是相同,  通过波形可以看到,  周期大约为 2π,  这与系统对应的谐振频率是对应的。 电路中的电感和电容的数值都是1,  由此,可以知道输出信号震荡周期为 2π。

G5M1741317201_1920_1080.MP4|_-5

  通过仿真, 可以看到, 电路中的串联电阻可以影响单位冲激响应输出波形。 随着电阻的增加, 输出信号从震荡转换到不震荡, 输出信号的幅度也会下降。  通过理论分析, 可以得到一个临界点,  也就是对应输出信号从震荡转换到不震荡对应的串联电阻的数值。

G3M1741317668_1920_1080.MP4|_-3

from headm import *

import scipy

L = 1
C = 1
Rdim = linspace(0, 5, 200)

for R in Rdim:
    num = [1/(L*C)]
    den = [1, R/(L*C), 1/(L*C)]
    system = (num, den)

    plt.clf()
    t = linspace(0, 50, 5000)
    tt,y = scipy.signal.impulse(system, T=t)
    plt.plot(t, y, lw=3, label='R=%f'%R)

    plt.xlabel("Time(s)", color="steelblue", fontsize=16)
    plt.ylabel("Vc(t)", color="steelblue", fontsize=16)
    plt.grid(True)
    plt.legend(loc='upper right', fontsize=24)
    plt.tight_layout()
    plt.draw()
    plt.pause(.1)
    pltgif.append(plt)

pltgif.save()

▲ 图1.5.2  不同R对应的单位冲激响应

▲ 图1.5.2 不同R对应的单位冲激响应

 

  结 ※


  文对于第三次作业中的系统冲激响应仿真实验进行了讨论。  相应的Python代码在CSDN对应的博文中给出了。

G2M1741317821_1920_1080.MP4|_-2


■ 相关文献链接:

● 相关图表链接:

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐