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中文乱码的解决方法
Nov 04 Python
Python中处理字符串的相关的len()方法的使用简介
May 19 Python
简单谈谈python中的Queue与多进程
Aug 25 Python
python 读写txt文件 json文件的实现方法
Oct 22 Python
Python实现的查询mysql数据库并通过邮件发送信息功能
May 17 Python
Python基于聚类算法实现密度聚类(DBSCAN)计算【测试可用】
Dec 26 Python
Python统计一个字符串中每个字符出现了多少次的方法【字符串转换为列表再统计】
May 05 Python
anaconda如何查看并管理python环境
Jul 05 Python
python使用 zip 同时迭代多个序列示例
Jul 06 Python
Python for循环通过序列索引迭代过程解析
Feb 07 Python
在python中list作函数形参,防止被实参修改的实现方法
Jun 05 Python
python的json包位置及用法总结
Jun 21 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 MYSQL乱码问题,使用SET NAMES utf8校正
2009/11/30 PHP
PHP 修复未正常关闭的HTML标签实现代码(支持嵌套和就近闭合)
2012/06/07 PHP
php实现三级级联下拉框
2016/04/17 PHP
网站页面自动跳转实现方法PHP、JSP(上)
2010/08/01 Javascript
基于jquery实现点击左右按钮图片横向滚动
2013/04/11 Javascript
js substring从右边获取指定长度字符串(示例代码)
2013/12/23 Javascript
3种js实现string的substring方法
2015/11/09 Javascript
JS使用eval解析JSON的注意事项分析
2015/11/14 Javascript
jquery.cookie实现的客户端购物车操作实例
2015/12/24 Javascript
JavaScript通过filereader接口读取文件
2017/05/10 Javascript
浅谈Angular路由守卫
2017/08/26 Javascript
js+canvas实现验证码功能
2020/09/21 Javascript
Vue框架里使用Swiper的方法示例
2018/09/20 Javascript
使用p5.js临摹动态图形
2019/10/23 Javascript
[01:14]辉夜杯战队访谈宣传片—NEWBEE.Y
2015/12/26 DOTA
[34:10]Secret vs VG 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.24
2019/09/10 DOTA
python多线程抓取天涯帖子内容示例
2014/04/03 Python
Python命令行参数解析模块getopt使用实例
2015/04/13 Python
理解python正则表达式
2016/01/15 Python
分享给Python新手们的几道简单练习题
2017/09/21 Python
解决Python selenium get页面很慢时的问题
2019/01/30 Python
python实现维吉尼亚加密法
2019/03/20 Python
python通过链接抓取网站详解
2019/11/20 Python
python 画函数曲线示例
2019/12/04 Python
使用SimpleITK读取和保存NIfTI/DICOM文件实例
2020/07/01 Python
css3实现小箭头各种图形效果
2020/07/08 HTML / CSS
纯html5+css3下拉导航菜单实现代码
2013/03/18 HTML / CSS
优秀的教师个人的中文求职信
2013/09/21 职场文书
个人自我剖析材料
2014/02/07 职场文书
骨干教师培训方案
2014/05/06 职场文书
警察先进个人事迹材料
2014/05/16 职场文书
大学运动会加油稿200字(5篇)
2014/09/27 职场文书
律师授权委托书范本
2014/10/07 职场文书
组织委员竞选稿
2015/11/21 职场文书
教师学期述职自我鉴定
2019/08/16 职场文书
JS如何实现基于websocket的多端桥接平台
2021/05/14 Javascript