700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > matlab单位阶跃响应与单位脉冲响应 python 已知响应函数求单位阶跃响应或脉冲响应...

matlab单位阶跃响应与单位脉冲响应 python 已知响应函数求单位阶跃响应或脉冲响应...

时间:2023-06-21 14:54:03

相关推荐

matlab单位阶跃响应与单位脉冲响应 python 已知响应函数求单位阶跃响应或脉冲响应...

最近学习自动控制原理,关于控制系统的一些,老师用布置了一些作业说要用matlab画,我试试python

首先介绍一下所使用的库:control matplotlib sympy

1.control库:用来计算脉冲响应与阶跃响应

Paste_Image.png

2.sympy:用以化简多项式为和的形式方便写参数

比如我们使用 sympy 来验证等式:x2+y2=(x+(2xy)1/2+y)(x−(2xy)1/2+y)

from sympy import Symbol, expand

from fractions import Fraction

x = Symbol('x')

y = Symbol('y')

expand((x+(2xy)Fraction(1, 2)+y)(x-(2xy)Fraction(1, 2)+y))

x2 + y*2

参照详细例子:

/lanchunhui/article/details/49979411

3.matplotlib 用以画图

分别是单位脉冲响应和单位节约响应的图像

单位脉冲响应.png

单位阶跃响应.png

![)QYB1_(CM2XKGM6}$)19R]P.png](http://upload-images.jianshu.io/upload_images/5854570-07199bf87612f8e6.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

源码如下:

import control as ctl

import matplotlib.pyplot as plt#画图包

from sympy import Symbol, expand

def step_plot(s,color):#

y,t=ctl.step(s)

plt.plot(t,y,color,linewidth=0.6)

plt.xlabel('Time(seconds)',fontsize=9)

plt.ylabel('Amplitude',fontsize=9)

return plt

def impulse_plot(s,color):#

y,t=ctl.impulse(s)

plt.plot(t,y,color,linewidth=0.6)

plt.xlabel('Time(seconds)',fontsize=9)

plt.ylabel('Amplitude',fontsize=9)

return plt

s=Symbol("s")

y=Symbol("y")

list=expand((s**2+0.6*s+1)*(s**2+3*s+9)*(s+5))

s=ctl.tf([45],[1,8.6,29.8,67.4,51,45])

b=ctl.tf([1],[1,0.6,1])

ax1=plt.subplot(311)#在图表2中创建子图1

ax1=impulse_plot(s,'red')

ax2=plt.subplot(312)#在图表2中创建子图2

ax2=impulse_plot(b,'blue')

ax3=plt.subplot(313)

ax1=impulse_plot(s,'red')

ax2=impulse_plot(b,'-.')

plt.show()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。