Python全面分析系统的时域特性和频率域特性


Posted in Python onFebruary 26, 2020

在不使用matlab的情况下,可以选择用python来实现自动控制理论有关系统打时域分析和频率域分析等,安装的package是python-control,在windows的控制台(cmd)或者linux终端下输入pip install control 即可,注意,如果同时安装了2.7 和 3.x(3.4或者3.5或者3.6 版本,使用pip 命令打时候需要指定版本号,如pip2 install control 或者pip3.4 install control ,当然,常用打科学计算用的package也要安装,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全面分析系统的时域特性和频率域特性

Python全面分析系统的时域特性和频率域特性

Python全面分析系统的时域特性和频率域特性

以上这篇Python全面分析系统的时域特性和频率域特性就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 流程控制实例代码
Sep 25 Python
跟老齐学Python之用while来循环
Oct 02 Python
python各种语言间时间的转化实现代码
Mar 23 Python
Python实现删除文件中含“指定内容”的行示例
Jun 09 Python
Python简单获取网卡名称及其IP地址的方法【基于psutil模块】
May 24 Python
Python 读取串口数据,动态绘图的示例
Jul 02 Python
Python如何自动获取目标网站最新通知
Jun 18 Python
python如何使用代码运行助手
Jul 03 Python
Python collections.deque双边队列原理详解
Oct 05 Python
Python 批量下载阴阳师网站壁纸
May 19 Python
pytorch 梯度NAN异常值的解决方案
Jun 05 Python
Python获取字典中某个key的value
Apr 13 Python
解决pycharm每次打开项目都需要配置解释器和安装库问题
Feb 26 #Python
Python中os模块功能与用法详解
Feb 26 #Python
Python中sys模块功能与用法实例详解
Feb 26 #Python
Python线程threading模块用法详解
Feb 26 #Python
Python图像处理库PIL中图像格式转换的实现
Feb 26 #Python
Python基础之字典常见操作经典实例详解
Feb 26 #Python
python3使用Pillow、tesseract-ocr与pytesseract模块的图片识别的方法
Feb 26 #Python
You might like
php学习之流程控制实现代码
2011/06/09 PHP
PHP5中Cookie与 Session使用详解
2013/04/30 PHP
PHP下获取上个月、下个月、本月的日期(strtotime,date)
2014/02/02 PHP
PHP调用VC编写的COM组件实例
2014/03/29 PHP
PHP中cookie和session的区别实例分析
2014/08/28 PHP
Array对象方法参考
2006/10/03 Javascript
JavaScript中的条件判断语句使用详解
2015/06/03 Javascript
JavaScript动态改变div属性的实现方法
2015/07/22 Javascript
即将发布的jQuery 3 有哪些新特性
2016/04/14 Javascript
详解Node.js实现301、302重定向服务
2017/04/07 Javascript
jQuery 实时保存页面动态添加的数据的示例
2017/08/14 jQuery
JavaScript实现微信红包算法及问题解决方法
2018/04/26 Javascript
javascriptvoid(0)含义以及与"#"的区别讲解
2019/01/19 Javascript
vue组件三大核心概念图文详解
2019/05/30 Javascript
vue组件开发之slider组件使用详解
2020/08/21 Javascript
[54:17]DOTA2-DPC中国联赛定级赛 RNG vs iG BO3第二场 1月10日
2021/03/11 DOTA
Python3 XML 获取雅虎天气的实现方法
2018/02/01 Python
Python3之简单搭建自带服务器的实例讲解
2018/06/04 Python
python两个_多个字典合并相加的实例代码
2019/12/26 Python
python 识别登录验证码图片功能的实现代码(完整代码)
2020/07/03 Python
Python3+RIDE+RobotFramework自动化测试框架搭建过程详解
2020/09/23 Python
使用CSS3制作一个简单的进度条(demo)
2017/05/23 HTML / CSS
翻新二手苹果产品的网络领导者:Mac of all Trades
2017/12/19 全球购物
Hanro官网:奢华男士和女士内衣、睡衣和家居服
2018/10/25 全球购物
澳大利亚珠宝商:Shiels
2019/10/06 全球购物
印度在线购买电子产品网站:Croma
2020/01/02 全球购物
英文版区域经理求职信
2013/10/23 职场文书
七年级音乐教学反思
2014/01/26 职场文书
售后求职信范文
2014/03/15 职场文书
元旦联欢会主持词
2014/03/26 职场文书
《长江之歌》教学反思
2014/04/17 职场文书
结婚保证书范文
2014/04/29 职场文书
骨干教师事迹材料
2014/12/17 职场文书
全国爱眼日活动总结
2015/02/27 职场文书
Python基础之元编程知识总结
2021/05/23 Python
PostgreSQL事务回卷实战案例详析
2022/03/25 PostgreSQL