matlab里dcgain,制系统的时域分析

一个动态系统的性能常用典型输入作用下的响应来描述。响应是指零初始值条件下某种典型的输入函数作用下对象的响应,控制系统常用的输入函数为单位阶跃函数和脉冲激励函数(即冲激函数)。在MATLAB的控制系统工具箱中提供了求取这两种输入下系统响应的函数。

一、时域分析的一般方法

求取系统单位阶跃响应:step()

求取系统的冲激响应:impulse()

(一)step()函数的用法

y=step(num,den,t):其中num和den分别为系统传递函数描述中的分子和分母多项式系数,t为选定的仿真时间向量,一般可以由t=0:step:end等步长地产生出来。该函数返回值y为系统在仿真时刻各个输出所组成的矩阵。

[y,x,t]=step(num,den):此时时间向量t由系统模型的特性自动生成,状态变量x返回为空矩阵。

[y,x,t]=step(A,B,C,D,iu):其中A,B,C,D为系统的状态空间描述矩阵,iu用来指明输入变量的序号。x为系统返回的状态轨迹。

如果对具体的响应值不感兴趣,而只想绘制系统的阶跃响应曲线,可调用以下的格式:

step(num,den);step(num,den,t);step(A,B,C,D,iu,t);step(A,B,C,D,iu);

线性系统的稳态值可以通过函数dcgain()来求取,其调用格式为:

dc=dcgain(num,den)或dc=dcgain(a,b,c,d)

例exp4_3.m已知系统的开环传递函数为:

b85b4f7226914d89c6b5d74094eff433.gif

求系统在单位负反馈下的阶跃响应曲线。

clc

clear

closeall

%开环传递函数描述

num=[20];

den=[1836400];

%求闭环传递函数

[numc,denc]=cloop(num,den);

%绘制闭环系统的阶跃响应曲线

t=0:0.1:10;

y=step(numc,denc,t);

[y1,x,t1]=step(numc,denc);

%对于传递函数调用,状态变量x返回为空矩阵

plot(t,y,'r:',t1,y1)

title('thestepresponce')

xlabel('time-sec')

%求稳态值

disp('系统稳态值dc为:')

dc=dcgain(numc,denc)

(二)impulse()函数的用法

求取脉冲激励响应的调用方法与step()函数基本一致。

y=impulse(num,den,t);[y,x,t]=impulse(num,den);[y,x,t]=impulse(A,B,C,D,iu,t)

impulse(num,den);impulse(num,den,t)

impulse(A,B,C,D,iu);impulse(A,B,C,D,iu,t)

例exp4_4.m已知系统的开环传递函数为:

b85b4f7226914d89c6b5d74094eff433.gif

求系统在单位负反馈下的脉冲激励响应曲线。

clc

clear

close

%开环传递函数描述

numo=20;

deno=[1836400];

%求闭环传递函数

[numc,denc]=cloop(numo,deno,-1);

%绘制闭环系统的脉冲激励响应曲线

t=1:0.1:10;

[y,x]=impulse(numc,denc,t);

plot(t,y)

title('theimpulseresponce')

xlabel('time-sec')

仿真时间t的选择:

对于典型二阶系统根据其响应时间的估算公式

e5d6dd210d489aae0107957b871138d0.gif可以确定。

对于高阶系统往往其响应时间很难估计,一般采用试探的方法,把t选大一些,看看响应曲线的结果,最后再确定其合适的仿真时间。

一般来说,先不指定仿真时间,由MATLAB自己确定,然后根据结果,最后确定合适的仿真时间。

在指定仿真时间时,步长的不同会影响到输出曲线的光滑程度,一般不易取太大。

二、常用时域分析函数

时间响应探究系统对输入和扰动在时域内的瞬态行为,系统特征如:上升时间调节时间超调量和稳态误差都能从时间响应上反映出来。MATLAB除了提供前面介绍的对系统阶跃响应冲激响应等进行仿真的函数外,还提供了大量对控制系统进行时域分析的函数,如:

covar:连续系统对白噪声的方差响应

initial:连续系统的零输入响应

lsim:连续系统对任意输入的响应

对于离散系统只需在连续系统对应函数前加d就可以,如dstep,dimpulse等。

它们的调用格式与stepimpulse类似,可以通过help命令来察看自学。

三、时域分析应用实例

MATLAB的step()和impulse()函数本身可以处理多输入多输出的情况,因此编写MATLAB程序并不因为系统输入输出的增加而变得复杂。

例exp4_7.m  某2输入2输出系统如下所示:

15bbeda24e1e36756965566c35288865.gif

b3beb885083666ac8cd9f190a895a28d.gif

,求系统的单位阶跃响应和冲激响应。

clc

clear

close

%系统状态空间描述

a=[-2.5-1.2200;1.22000;1-1.14-3.2-2.56;...

002.560];

b=[41;20;20;00];

c=[0103;0001];

d=[0-2;-20];

%绘制闭环系统的阶跃响应曲线

figure(1)

step(a,b,c,d)

title('stepresponse')

xlabel('time-sec')

ylabel('amplitude')

figure(2)

impulse(a,b,c,d)

title('impulseresponse')

xlabel('time-sec')

ylabel('amplitude')

例exp4_8.m  某系统框图如下所示,求d和e的值,使系统的阶跃响应满足:1.超调量不大于40%,2.峰值时间为0.8秒。

cb9bb461e92b621dc8226559a9c13dc9.png

由图可得闭环传递函数为:

00cbc1966dfa5b2511f857d03f19191d.gif,其为典型二阶系统。

由典型二阶系统特征参数计算公式

c6f45ad2dc188d58d064d252e0291db4.gif

4b3de2c8dc3af7a20f5513c614ad2a52.gif得:

8527c125c0af00f2fece203e2c8d8606.gif

7a5234b6b688e70a90743a297240c42c.gif

clear

clc

closeall

%输入期望得超调量及峰值时间

pos=input('pleaseinputexpectpos(%)=');

tp=input('pleaseinputexpecttp=');

z=log(100/pos)/sqrt(pi^2+(log(100/pos))^2);

wn=pi/(tp*sqrt(1-z^2));

num=wn^2;

den=[12*z*wnwn^2];

t=0:0.02:4;

y=step(num,den,t);

plot(t,y)

xlabel('time-sec')

ylabel('y(t)')

grid

d=wn^2

e=(2*z*wn-1)/d

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/529352.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php 添加音乐,PHP网站插入音乐

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼你找对地方了,我是IT之家大神光卡蒋一欣。我把代码发给你,直接运行即可entrance\01.gif......\........\02.gif......\........\03.jpg......\........\04.jpg......\........\05.jpg......\........\06.jpg…

在oracle数据库中显示异常,Oracle数据库出现ORA-01034错误的解决方案

类型:数据库类大小:42.1M语言:中文 评分:5.0标签:立即下载使用Oracle数据库的朋友经常会碰到的错误ORA-3113 "end of fileon communication channel" 就是这样的一个,我们可以简单的把这个错误理…

oracle数据库内核,深入内核:Oracle数据库里SELECT操作Hang解析

崔华,网名 dbsnakeOracle ACE Director,ACOUG 核心专家编辑手记:感谢崔华授权我们独家转载其精品文章,也欢迎大家向“Oracle”社区投稿。我们都知道在 Oracle 数据库里是“读不阻塞写,写不阻塞读”,那么是否…

oracle 如何形成死锁,Oracle数据表中的死锁情况解决方法

在进行数据库管理的过程中,经常会出现数据表被用户的一些不合理操作而导致表被锁定的情况,以下主要介绍如何查找哪些表被哪个用户所锁定,以及如何解除锁定:1.查找被锁定的表:select object_name,session_id,os_user_name,oracle_username,process,locked_mode,statusfrom v$loc…

php 分布式数据库查询,分布式数据库 · Thinkphp5.0完全开发手册 · 看云

# 分布式数据库ThinkPHP内置了分布式数据库的支持,包括主从式数据库的读写分离,但是分布式数据库必须是相同的数据库类型。配置database.deploy 为1 可以采用分布式数据库支持。如果采用分布式数据库,定义数据库配置信息的方式如下&#xff1…

matlab 电力系统动态仿真,基于Matlab的电力系统动态仿真分析

本文通过两个简单实例介绍了利用 !"#$"% &’(! )*, -./对电力系统进行仿真研究的方法! 包括"热工自动调节控制系统的仿真分析和电力电器系统的仿真分析# 0 热工调节控制系统仿真分析 对热工调节控制系统的性能分析包括静态特性和动态特性两个方面# 这里主要…

oracle read by other session,AWR报告中,read by other session ,如何解决?

你看你的top sql里全是动态采样的sql,默认10g以后optimizer_dynamic_sampling参数为level 2,一般为缺失统计信息会造成每次使用动态采样,虽然动态采样会在表频繁发生大批量改变时,一般可以生成更好的执行计划,但是也不…

oracle insert into as select,比较create table as select * 与 insert into table select *

实验环境:SYSaaron> select * from v$version;BANNER--------------------------------------------------------------------------------Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - ProductionPL/SQL Release 11.2.0.1.0 - ProductionCORE …

unix 安装oracle,linux上安装Oracle

当前位置:我的异常网 Linux/Unix linux上安装Oraclelinux上安装Oraclewww.myexceptions.net 网友分享于:2013-09-03 浏览:26次linux下安装Oracle1.Linux下安装 jdk(Linux)建议从sun的主页上下载bin文件,运行后在/usr/会建立好java目录的Linux下相关命…

linux ftp用户指定多个目录,linux ftp服务器下用户限制目录的方法

我们使用服务器都要站在安全方面进行考虑,有必要将ftp服务下的用户限制在适当的范围内,那么linux ftp服务器下用户限制目录的方法有哪些呢?一起跟着爱站技术频道小编的步伐来了解一下吧!linux ftp服务器下用户只能在自己目录下的方法:第一步…

查找空目录Linux,Linux中find批量删除空文件及空文件夹脚本

find . -name "*" -type f -size 0c | xargs -n 1 rm -f #linux下批量删除空文件(大小等于0的文件)删除指定大小的文件,只要修改对应的 -size 参数就行:find . -name "*" -type f -size 1024c | xargs -n 1 rm -f #删除1k大小的文件…

linux关闭timewait端口,linux 如何强制关闭 time_wait 连接

匿名用户1级2016-04-16 回答# netstat -an|awk /tcp/ {print $6}|sort|uniq -c68 CLOSE_WAIT2 CLOSING136 ESTABLISHED38 FIN_WAIT116 FIN_WAIT22 LAST_ACK8 LISTEN71 SYN_RECV2936 TIME_WAIT#状态:描述CLOSED:无连接是活动的或正在进行LISTEN&#xff1…

memset头文件 linux,error: ‘memset’ was not declared in this scope

http://blog.sina.com.cn/s/blog_79d599dc0100r2vz.html昨天一同事把代码准备重新全新布置到新的环境上去的时候,代码报错了,先开始报错如下:error: ‘memset’ was not declared in this scopeerror: ‘strcat’ was not declared in this s…

linux中ls文件内存大小,Linux下用ls和du命令查看文件以及文件夹大小

webdriver零碎知识点#零碎知识点,用于记录平时遇到的比较杂的知识点 driver.current_url 获取当前url phantomjs 实现无浏览器界面自动化测试(driver webdriver.Phanto ...ORACLE删除当前用户下所有的表的方法1.如果有删除用户的权限,则可以: drop user user_name cascade; 加…

linux物理内存地址与iomem,一种Linux系统物理内存镜像文件分析方法_4

模块信息,如图7所示,给出了本发明的实施例中 模块结构关系图,modules变量指向某一个已加载模块结构体module地址,所有已加载模 块其module形成一个双向链表,如图7所示,据此可以获取到所有已加载模块。[0099…

linux设备分层优点,Linux设备驱动的分层设计思想

代码清单8第2行获取platform_data,而platform_data实际上是定义GPIO按键硬件信息的数组,第31行的for循环工具这些信息申请GPIO并初始化中断,对于LDD6140电路板而言,这些信息如代码清单10。代码清单10 LDD6410开发板GPIO按键的plat…

linux 关闭桌面环境,Ubuntu 14.04上的Cinnamon桌面环境PPA被关闭

今天Cinnamon桌面环境的开发者宣布关闭Cinnamon桌面环境的PPA,这意味着以后在Ubuntu上安装Cinnamon桌面环境将变得很难。关于为什么要关闭PPA,Cinnamon PPA的维护者Gwendal Le Bihan做出了以下解释:“稳定的Cinnamon PPA将不再提供&#xff0…

linux sd卡读写出错,linux系统SD卡读写问题

请教有过linux系统SD卡读写经验的前辈。我的项目是对FPGA上的SD卡部分做测试,在测试过程中发现在对SD卡所有领域进行读写操作时1、bus width 选择1-bit的速度4-bit是差不多的,这与我预想的不同,想知道问题出在哪里?(理论上4bit 速度应该是1-…

genymotion linux 32,Ubuntu Linux 32bit - 不是Genymotion虚拟设备

因为4天我没有找到解决方案我的genymotion有问题 我正在使用Ubuntu 12.04 32位(architecure:i686)并安装android studio并将genymotion的插件放入其中succefully ......现在我的问题,当点击genymotion设备管理器,列表是空的,当我试…

grub linux rootfs,rootfs文件系统(笔记)(草稿)

文件系统简介文件系统就是个软件,帮用户来管理一些二进制的信息,管理外存上存储的这些二进制各种文件在内存中都是以二进制的形式来存在的,如果没有文件系统,用户就需要自己去决定这些二进制的东西是什么,需要自己去和…