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计算一个序列的平均值的方法
Jul 11 Python
Python搭建APNS苹果推送通知推送服务的相关模块使用指南
Jun 02 Python
Python使用自带的ConfigParser模块读写ini配置文件
Jun 26 Python
R语言 vs Python对比:数据分析哪家强?
Nov 17 Python
Python 带有参数的装饰器实例代码详解
Dec 06 Python
python矩阵的转置和逆转实例
Dec 12 Python
Django model 中设置联合约束和联合索引的方法
Aug 06 Python
python scipy卷积运算的实现方法
Sep 16 Python
Python常用库大全及简要说明
Jan 17 Python
Python将二维列表list的数据输出(TXT,Excel)
Apr 23 Python
详解Python高阶函数
Aug 15 Python
python实现单机五子棋
Aug 28 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 output buffering缓存及程序缓存深入解析
2013/07/15 PHP
关于php程序报date()警告的处理(date_default_timezone_set)
2013/10/22 PHP
php输入流php://input使用示例(php发送图片流到服务器)
2013/12/25 PHP
[原创]PHP实现逐行删除文件右侧空格的方法
2015/12/25 PHP
JavaScript入门之对象与JSON详解
2011/10/21 Javascript
jQuery实现表头固定效果的实例代码
2013/05/24 Javascript
使用Javascript实现选择下拉菜单互移并排序
2016/02/23 Javascript
jQuery改变form表单的action,并进行提交的实现代码
2016/05/25 Javascript
JavaScript中的冒泡排序法
2016/08/03 Javascript
easyui datebox 时间限制,datebox开始时间限制结束时间,datebox截止日期比起始日期大的实现代码
2017/01/12 Javascript
纯js代码生成可搜索选择下拉列表的实例
2018/01/11 Javascript
vue动画之点击按钮往上渐渐显示出来的实例
2018/09/29 Javascript
Python实现的金山快盘的签到程序
2013/01/17 Python
跟老齐学Python之一个免费的实验室
2014/09/14 Python
python中执行shell的两种方法总结
2017/01/10 Python
Python中的默认参数实例分析
2018/01/29 Python
从请求到响应过程中django都做了哪些处理
2018/08/01 Python
python单例模式实例解析
2018/08/28 Python
Python基于plotly模块实现的画图操作示例
2019/01/23 Python
python画图——实现在图上标注上具体数值的方法
2019/07/08 Python
Python实现栈和队列的简单操作方法示例
2019/11/29 Python
Django 解决由save方法引发的错误
2020/05/21 Python
HTML5样式控制示例代码
2013/11/27 HTML / CSS
大专应届生个人的自我评价
2013/11/21 职场文书
大学生个人自我鉴定
2013/12/03 职场文书
《小壁虎借尾巴》教学反思
2014/02/16 职场文书
《谁的本领大》教后反思
2014/04/25 职场文书
日语专业毕业生自荐书
2014/06/18 职场文书
影视广告专业求职信
2014/09/02 职场文书
2015年社区环境卫生工作总结
2015/04/21 职场文书
预备党员群众意见
2015/06/01 职场文书
庆七一活动简报
2015/07/20 职场文书
班主任工作经验交流会总结
2015/11/02 职场文书
MySQL之高可用集群部署及故障切换实现
2021/04/22 MySQL
Promise面试题详解之控制并发
2021/05/14 面试题
Java内存模型之happens-before概念详解
2021/06/13 Java/Android