Python实现控制系统时域与频域分析

Owen
Owen
发布时间:2026-10-13| 5人浏览过
原创

本文介绍如何在Python环境中使用python-control库进行自动控制理论中的时域和频域分析。通过安装必要的科学计算包,如numpy、scipy和matplotlib,用户可以绘制阶跃响应、脉冲响应、任意输入信号输出、波特图和奈奎斯特图等,实现对系统特性的全面分析。

Python控制系统分析环境搭建

在无需使用MATLAB的情况下,可以利用Python完成自动控制理论中的系统时域与频域分析。首先需安装python-control库,在Windows的命令提示符(cmd)或Linux终端中执行pip install control命令即可。若系统中同时安装了Python 2.7和Python 3.x(如3.4、3.5或3.6版本),执行pip命令时需指定版本号,例如使用pip2 install control或pip3.4 install control。此外,还需安装常用的科学计算包,包括numpy、scipy、sympy、matplotlib和pandas等。

示例代码与文档参考

以下代码为个人练习示例,旨在记录与分享。由于该库的函数语法与MATLAB相似,此处未添加过多注释。如需了解更多细节,可访问python-control官网查阅相关文档。


#!/usr/bin/env python2
# -*- coding: utf-8 -*-
"""
Created on Wed Nov 16 17:48:02 2016

@author: kindy
"""

from control import *
from scipy import signal as sgl
from matplotlib import pyplot as plt
import numpy as np

T=np.mgrid[0:8:0.02]
U1=T
U2=T**2


sys1 = tf([1],[0.5,1]) # 
sys2 = tf([2],[1,2,4]) # 

# Step Response
def step_resp():
 sout1,stime1 = step(sys1)
 sout2,stime2 = step(sys2)
 plt.plot(stime1,sout1,'b',linewidth=0.5)
 plt.plot(stime2,sout2,'b',linewidth=0.5)
 plt.xlabel("Time")
 plt.ylabel("Amplitude")
 plt.title("Step Resopnse",fontsize=12)
 #plt.legend()
 plt.show()

# Impulse Response
def impulse_resp():

 iout1,itime1 = impulse(sys1)
 iout2,itime2 = impulse(sys2)
 plt.plot(itime1,iout1,'m',linewidth=0.8)
 plt.plot(itime2,iout2,'r',linewidth=0.8)
 plt.show()

#impulse_resp()

# 任意输入信号的输出,lsim
def lsim_plot():
 yout1,Time1, xout1 = lsim(sys1, U1, T)
 yout2,Time2, xout2 = lsim(sys2, U1, T)
 plt.plot(Time1, yout1, 'b', linewidth=0.7)
 plt.plot(Time2, yout2, 'b', linewidth=0.7)
 plt.show()

#lsim_plot()

# 波特图
def bode_plot():
 bode(sys1)
 bode(sys2)

#bode_plot()

# Nyquist图
def nyquist_plot():
 nyquist(sys1)
 nyquist(sys2)

#nyquist_plot() 


# 根轨迹
def root_locus():
 rlocus(sys1)
 rlocus(sys2)

root_locus()

系统响应图表展示

以下是运行代码后生成的一些结果图表:

以上就是本文关于Python全面分析系统时域特性和频率域特性的全部内容,希望能为读者提供参考,并欢迎大家继续支持本站。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。