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字符串替换实例分析
May 11 Python
使用pdb模块调试Python程序实例
Jun 02 Python
Python爬虫包 BeautifulSoup  递归抓取实例详解
Jan 28 Python
PyQt5每天必学之日历控件QCalendarWidget
Apr 19 Python
Django中反向生成models.py的实例讲解
May 30 Python
python3实现小球转动抽奖小游戏
Apr 15 Python
Python3.5 + sklearn利用SVM自动识别字母验证码方法示例
May 10 Python
Python获取命令实时输出-原样彩色输出并返回输出结果的示例
Jul 11 Python
Python实现微信机器人的方法
Sep 06 Python
python tornado修改log输出方式
Nov 18 Python
Python 找出出现次数超过数组长度一半的元素实例
May 11 Python
Python OpenCV中的numpy与图像类型转换操作
Dec 11 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使用GeoIP库实例
2014/06/27 PHP
PHP数组函数知识汇总
2016/05/12 PHP
PHP页面跳转实现延时跳转的方法
2016/12/10 PHP
cakephp常见知识点汇总
2017/02/24 PHP
PHP实现SMTP邮件的发送实例
2018/09/27 PHP
关于JavaScript的gzip静态压缩方法
2007/01/05 Javascript
jquery 插件学习(六)
2012/08/06 Javascript
Javascript 颜色渐变效果的实现代码
2013/10/01 Javascript
jQuery探测位置的提示弹窗(toolTip box)详细解析
2013/11/14 Javascript
js动态创建标签示例代码
2014/06/09 Javascript
jquery实现将获取的颜色值转换为十六进制形式的方法
2014/12/20 Javascript
javascript数组去重的六种方法汇总
2015/08/16 Javascript
jQuery实现图片预加载效果
2015/11/27 Javascript
Vue使用vue-cli创建项目
2017/09/01 Javascript
js防刷新的倒计时代码 js倒计时代码
2017/09/06 Javascript
微信小程序webview实现长按点击识别二维码功能示例
2019/01/24 Javascript
JQueryDOM之样式操作
2019/03/27 jQuery
微信小程序获取当前时间及星期几的实例代码
2020/09/20 Javascript
在Vue中使用Select选择器拼接label的操作
2020/10/22 Javascript
[59:32]Liquid vs Fnatic 2019国际邀请赛淘汰赛败者组BO1 8.20.mp4
2020/07/19 DOTA
python读取图片任意范围区域
2019/01/23 Python
python turtle库画一个方格和圆实例
2019/06/27 Python
Python实现 PS 图像调整中的亮度调整
2019/06/28 Python
python调用支付宝支付接口流程
2019/08/15 Python
Python urlopen()和urlretrieve()用法解析
2020/01/07 Python
Python爬虫实现HTTP网络请求多种实现方式
2020/06/19 Python
HTML5实现Notification API桌面通知功能
2016/03/02 HTML / CSS
预备党员党校学习自我评价分享
2013/11/12 职场文书
《玩具柜台前的孩子》教学反思
2014/02/13 职场文书
分层教学实施方案
2014/03/19 职场文书
中学生期中自我鉴定
2014/04/20 职场文书
演讲稿开场白台词
2014/08/25 职场文书
工作失职造成投诉的检讨书范文
2014/10/05 职场文书
设立有限责任公司出资协议书
2014/11/01 职场文书
美丽人生观后感
2015/06/03 职场文书
Python  lambda匿名函数和三元运算符
2022/04/19 Python