Python全面分析系统的时域特性和频率域特性
作者:落叶_小唱 发布时间:2022-12-04 06:32:12
标签:Python,时域特性,频率域特性
在不使用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()
下面是运行打一些结果图:
来源:https://blog.csdn.net/ouening/article/details/53192218


猜你喜欢
- 我们搜集金融数据,通常想要的是利用爬虫的方法。其实我们最近所学的class不仅可以进行类调用,在获取数据方面同样是可行的,很多小伙伴都比较关
- 深度学习网络通常具有很深的层次结构,而且层与层之间通常会有并联、串联等连接方式。当使用PyTorch建立一个深度学习网络并输出文本向读者展示
- 环境:Python3.7依赖库:import datetimeimport randomimport requestsimport hash
- 测试函数主要是用来评估优化算法特性的,这里我用python3绘制了部分测试函数的图像。具体的测试函数可以结合 * 来了解。想要显示某个测试
- 1、字典的概念Python中的字典数据类型和现实中的字典很像,它是以键值对(键和值的组合)的方式把数据组织到一起,可以通过键找到与之对应的值
- 爬取”顶点小说网“《纯阳剑尊》代码import requestsfrom bs4 import BeautifulSoup# 反爬heade
- 数据库缓存为了使用数据库表作为缓存后端,首先在数据库中运行这个命令以创建缓存表:python manage.py createcacheta
- 前言:Pandas 中应用 query 函数来进行数据筛选。query 函数的一般用法如下:df.query('expression
- 上次看到别人说写一个类似支付宝支付密码的输入框效果,今天就想自己写了试试看,大体功能是实现了。已实现部分: 1. 焦点会随着输入数值往后推移
- 本文为大家分享了windows下pycharm安装、创建文件、配置默认模板的具体步骤,供大家参考,具体内容如下步骤: 下包 —->安装
- docutils 的官方工具地址为:https://docutils.sourceforge.io/目前的更新主要是在版本和使用手册的更新上
- 完美解决“换另一台电脑上用VS2008继续开发web项目时出现 “System.Runtime.InteropServices.COMExc
- 一般来说,一个真正的、完整的站点是离不开数据库的,因为实际应用中,需要保存的数据很多,而且这些数据之间往往还有关联,利用数据库来管理这些数据
- 下面请看本文详细介绍.Perl字符串处理函数1. index语法:position=index(string,substring,posit
- 一、环境设置第一步引入必须的各类包import osimport tkinterimport tkinter.filedialogimpor
- 1.使用npm进行初始化在本地创建项目的文件夹名称,如 node_test,并在该文件夹下进行黑窗口执行初始化命令 2. 安装 e
- 概述在本文中,我们将以深度库即 Mediapipe为基础库,以及其他计算机视觉预处理的CV2库来制作手部地标检测模型。市场上有很多关于这种问
- 根据我们指定的条件检索函数中的元素import matplotlib.pyplot as pltimport numpy as npa =
- 前言今天无意中发现在python中的一个多重赋值的小问题,自己一开始是比较简单化的理解了这个多重赋值操作的概念,所以导致在一道实现斐波那契数
- 比如一个汉字也只会算一个字节,在排版时如果全是汉字,好说,反正没什么差别,但是如果 * 作的字符串有汉字又有英文字母时,就不方便了,以下三个函