用python建模_用Python建模一个线性系统

本文介绍了一个简单的Python脚本,用于绘制系统的Bode图。通过使用matplotlib、numpy和scipy等库,该脚本能够计算并展示给定系统的幅频响应和相频响应。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我知道这有点旧,但搜索引起了我的这个问题。当我找不到一个好的模块时,我把它放在一起。这并不多,但如果有人发现他们在这里,这是一个好的开始。

import matplotlib.pylab as plt

import numpy as np

import scipy.signal

def bode(G,f=np.arange(.01,100,.01)):

plt.figure()

jw = 2*np.pi*f*1j

y = np.polyval(G.num, jw)/np.polyval(G.den, jw)

mag = 20.0*np.log10(abs(y))

phase = np.arctan2(y.imag, y.real)*180.0/np.pi % 360

plt.subplot(211)

#plt.semilogx(jw.imag, mag)

plt.semilogx(f,mag)

plt.grid()

plt.gca().xaxis.grid(True, which='minor')

plt.ylabel(r'Magnitude (db)')

plt.subplot(212)

#plt.semilogx(jw.imag, phase)

plt.semilogx(f,phase)

plt.grid()

plt.gca().xaxis.grid(True, which='minor')

plt.ylabel(r'Phase (deg)')

plt.yticks(np.arange(0, phase.min()-30, -30))

return mag, phase

f=scipy.signal.lti([1],[1,1])

bode(f)

编辑:我回到这里,是因为有人upvoted这个答案,你应该尝试Control Systems Library。他们已经使用匹配的语法和一切来实现大部分Matlab控制系统工具箱。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值