matlab绘制系统函数波特图
自动控制原理MATLAB仿真实验报告
实验一 MATLAB 及仿真实验(控制系统的时域分析)一、实验目的学习利用MATLAB 进行控制系统时域分析,包括典型响应、判断系统稳定性和分析系统的动态特性; 二、预习要点1、 系统的典型响应有哪些2、 如何判断系统稳定性3、 系统的动态性能指标有哪些 三、实验方法(一) 四种典型响应1、 阶跃响应:阶跃响应常用格式:1、)(sys step ;其中sys 可以为连续系统,也可为离散系统。
2、),(Tn sys step ;表示时间范围0---Tn 。
3、),(T sys step ;表示时间范围向量T 指定。
4、),(T sys step Y =;可详细了解某段时间的输入、输出情况。
2、 脉冲响应:脉冲函数在数学上的精确定义:0,0)(1)(0〉==⎰∞t x f dx x f其拉氏变换为:)()()()(1)(s G s f s G s Y s f ===所以脉冲响应即为传函的反拉氏变换。
脉冲响应函数常用格式: ① )(sys impulse ; ②);,();,(T sys impulse Tn sys impulse③ ),(T sys impulse Y =(二) 分析系统稳定性 有以下三种方法:1、 利用pzmap 绘制连续系统的零极点图;2、 利用tf2zp 求出系统零极点;3、 利用roots 求分母多项式的根来确定系统的极点 (三) 系统的动态特性分析Matlab 提供了求取连续系统的单位阶跃响应函数step 、单位脉冲响应函数impulse 、零输入响应函数initial 以及任意输入下的仿真函数lsim.四、实验内容 (一) 稳定性1. 系统传函为()27243645232345234+++++++++=s s s s s s s s s s G ,试判断其稳定性2. 用Matlab 求出253722)(2342++++++=s s s s s s s G 的极点。
%Matlab 计算程序num=[3 2 5 4 6];den=[1 3 4 2 7 2];G=tf(num,den);pzmap(G);p=roots(den)运行结果: p =+ - + -P ole-Zero MapReal AxisI m a g i n a r y A x i s-2-1.5-1-0.500.5-1.5-1-0.50.511.5图1-1 零极点分布图由计算结果可知,该系统的2个极点具有正实部,故系统不稳定。
使用 matlab 语句表达微分环节的传递函数
使用 Matlab 语句表达微分环节的传递函数1. 介绍微分环节的传递函数在控制系统中,微分环节是一种常见的控制元件,其传递函数通常用来描述输入信号经过微分环节后的输出信号与输入信号之间的关系。
微分环节的传递函数通常具有形式为G(s)=Ks的特点,其中K为增益,s为复变量。
微分环节在控制系统中具有重要的作用,常用于提高系统的动态性能和抑制振荡。
2. 使用 Matlab 表达微分环节传递函数的基本语法在Matlab 中,可以使用一些简单的语句来表达微分环节的传递函数。
要表示一个简单的微分环节传递函数G(s)=Ks,可以使用以下语法:```matlabK = 1; 定义增益值s = tf('s'); 定义复变量 sG = K*s; 表示传递函数```在这个语法中,首先定义了微分环节的增益K,然后使用tf函数定义了复变量s,最后将传递函数G(s)表示为K*s。
3. 使用 Matlab 表达一般形式的微分环节传递函数除了简单的Ks形式外,微分环节的传递函数还可以具有一般形式G(s)=K(s-a),其中a为常数。
在 Matlab 中,可以使用以下语句表达微分环节传递函数的一般形式:```matlabK = 2; 定义增益值a = 3; 定义常数as = tf('s'); 定义复变量 sG = K*(s-a); 表示传递函数```在这个语法中,除了定义增益K和常数a外,其余部分与简单形式的传递函数表达相似。
4. 使用 Matlab 表达多个微分环节的传递函数在实际控制系统中,经常会遇到多个微分环节组成的复杂系统。
在Matlab 中,可以使用一些复杂的语句来表达多个微分环节的传递函数。
一个由两个微分环节组成的传递函数G(s)=Ks^2可以使用以下语句表示:```matlabK = 4; 定义增益值s = tf('s'); 定义复变量 sG = K*s^2; 表示传递函数```在这个语法中,使用s^2表示两个微分环节的乘积。
实验六 基于MATLAB控制系统的Nyquist图及其稳定性分析 实验七 基于MATLAB控制系统的伯德图及其频域分析
实验六 基于MATLAB 控制系统的Nyquist 图及其稳定性分析 一、实验目的1、熟练掌握使用MATLAB 命令绘制控制系统Nyquist 图的方法。
2、能够分析控制系统Nyquist 图的基本规律。
3、加深理解控制系统乃奎斯特稳定性判据的实际应用。
4、学会利用奈氏图设计控制系统。
二、实验原理奈奎斯特稳定性判据(又称奈氏判据)反馈控制系统稳定的充分必要条件是当从变到时,开环系统的奈氏曲线不穿过点且逆时针包围临界点点的圈数R 等于开环传递函数的正实部极点数。
奈奎斯特稳定性判据是利用系统开环频率特性来判断闭环系统稳定性的一个判据,便于研究当系统结构参数改变时对系统稳定性的影响。
1、对于开环稳定的系统,闭环系统稳定的充分必要条件是:开环系统的奈氏曲线不包围点。
反之,则闭环系统是不稳定的。
2、对于开环不稳定的系统,有个开环极点位于右半平面,则闭环系统稳定的充分必要条件是:当从变到时,开环系统的奈氏曲线逆时针包围点次。
三、实验内容1、绘制控制系统Nyquist 图例1、系统开环传递函数,绘制其Nyquist 图。
210()210G s s s =++M-fileclcclear all den=[10]; num=[1 2 10]; sys=tf(den,num) nyquist(sys);2、根据奈氏曲线判定系统的稳定性例2、已知绘制Nyquist 图,判定系统的稳定性。
M-fileclcclear320.5()()20.5G s H s s s s =+++den=[0.5];num=[1 2 1 0.5];sys=tf(den,num);nyquist(sys)roots(num)ans =-1.5652-0.2174 + 0.5217i-0.2174 - 0.5217i【分析】由于系统奈氏曲线没有包围且远离(-1,j 0)点,且p=0,因此系统闭环稳定。
四、实验能力要求1、熟练使用MATLAB绘制控制系统Nyquist曲线的方法,掌握函数nyquist ( )的三种调用格式,并灵活运用。
自动控制原理MATLAB仿真实验报告
自动控制原理实验报告学 院 电子信息与电气工程学院实验一 MATLAB 及仿真实验(控制系统的时域分析)一、实验目的学习利用MATLAB 进行控制系统时域分析,包括典型响应、判断系统稳定性和分析系统的动态特性; 二、预习要点 1、 系统的典型响应有哪些? 2、 如何判断系统稳定性? 3、系统的动态性能指标有哪些?三、实验方法 (一) 四种典型响应 1、阶跃响应: 阶跃响应常用格式:1、)(sys step ;其中sys 可以为连续系统,也可为离散系统。
2、),(Tn sys step ;表示时间范围0---Tn 。
3、),(T sys step ;表示时间范围向量T 指定。
4、),(T sys step Y =;可详细了解某段时间的输入、输出情况。
2、脉冲响应:脉冲函数在数学上的精确定义:0,0)(1)(0〉==⎰∞t x f dx x f其拉氏变换为:)()()()(1)(s G s f s G s Y s f ===所以脉冲响应即为传函的反拉氏变换。
脉冲响应函数常用格式: ① )(sys impulse ; ②);,();,(T sys impulse Tn sys impulse③ ),(T sys impulse Y = (二) 分析系统稳定性 有以下三种方法: 1、 利用pzmap 绘制连续系统的零极点图; 2、 利用tf2zp 求出系统零极点;3、利用roots 求分母多项式的根来确定系统的极点(三) 系统的动态特性分析Matlab 提供了求取连续系统的单位阶跃响应函数step 、单位脉冲响应函数impulse 、零输入响应函数initial 以及任意输入下的仿真函数lsim.四、实验内容 (一) 稳定性1. 系统传函为()27243645232345234+++++++++=s s s s s s s s s s G ,试判断其稳定性2.用Matlab求出253722)(2342++++++=s s s s s s s G 的极点。
MATLAB应用-传递函数与画图
用MATLAB求系统的零点、极点 及特征多项式
• 部分分式展开
n−1 +⋅⋅⋅+bn−1s +bn M(s) num b0sn +bs 1 = = 考虑传递函数:N(s) den a sn +asn−1 +⋅⋅⋅+a s +a 0 1 n−1 n
带有选项的曲线绘制命令的调用格式: plot(x1,y1,s1,x2,y2,s2,…)
用MATLAB绘制二维图形
• 子图的命令
MATLAB允许将一个图形窗口按矩阵形式分成多个子 窗口,分别显示多个图形,需要用到subplot( )函数。 该函数把一个图形窗口分割成m*n个子绘图区域。调 用格式:subplot (m, n, k) 例如:subplot(4,3,6)表示将窗口分割成4*3个部 分,在第6 个部分上绘制图像。 通过参考数 k 可以调用各个绘图区域,子绘图区域按 注意:MATLAB最多允许9*9的分割。 行从左到右从上到下编号。
10s + 5 G2 ( s ) = s
H (s) =
1 0.01s + 1
用MATLAB建立传递函数模型
• 多项式模型TF和零极点模型ZPK的转换 • TF对象转换成ZPK对象 调用格式为:G1=zpk(G) 例
6.8s 2 + 61.2 s + 95.2 G (s) = 4 s + 7.5s 3 + 22 s 2 + 19.5s
用MATLAB建立传递函数模型
• 多项式模型—TF对象(单入—单出系统) 线性时不变(LTI)系统的传递函数模型:
用MATLAB绘制Nyquist图
据,不带输出变量时,则绘出奈奎斯特
曲线。也可用指定频率向量w指定所要绘
制的曲线范围。
2021/1/20
用MATLAB绘制NY.yXquinisgt图
2
(a) z=1,p=2
n=[0 0 1 1] m=[1 2 0 0] sys=tf(n,m) nyquist(sys)
2021/1/20
用MATLAB绘制NY.yXquinisgt图
用MATLAB绘制Nyquist图
用MATLAB绘制Nyquist图
MATLAB命令
nyquist命令可以求得连续系统的奈奎斯特 曲线。
命令格式:
[ re,im,w ] = nyquist(num,den)
[ re,im,w ] = nyquist(num,den,w)
当带有输出变量时,可得到相应的一组数
%求函数ejw的虚部,结果不显示
[ a,b ] = nyquist(n,d,w); %求指定频率范围内的奈氏值,不显示结果
n1 = 26;
%取k = 26
d1 = d;
%保留原分母矢量
[ a1,b1 ] = nyquist(n1,d1,w); %求k = 0.5时的奈氏值,结果不显示
n2 = 50;
用MATLAB绘制Nyquist图
幅值裕度和相位裕度
n = 10;
%取k = 10时的值
d = conv([1 2],[1 2 5]);
w = [ 0:0.01:10 ];
%确定频率范围
e = exp(j*w);
%给出指数函数ejw
r = real(e);
%求指数函数的实部,结果不显示
i = imag(e);
用MATLAB绘制Nyquist图
使用Matlab进行控制系统设计的基本步骤
使用Matlab进行控制系统设计的基本步骤控制系统设计是一项重要的工程任务,它涉及到系统建模、控制器设计和系统分析等方面。
而Matlab作为一款强大的数学工具软件,提供了丰富的功能和工具,可以帮助工程师实现控制系统设计的各个环节。
本文将介绍使用Matlab进行控制系统设计的基本步骤。
一、系统建模控制系统设计的第一个关键步骤是系统建模。
系统建模是将实际的物理系统或过程转化为数学方程的过程。
Matlab提供了多种建模方法,可以根据实际需求选择适合的方法。
1.1 时域建模时域建模是一种基于微分方程和代数方程的建模方法,适合描述连续系统的动态特性。
可以使用Matlab的Simulink工具箱进行时域建模,通过拖拽模块和连接线的方式,构建系统模型。
1.2 频域建模频域建模是一种基于频率响应的建模方法,适合描述系统的幅频、相频特性。
可以使用Matlab的控制系统工具箱进行频域建模,通过输入系统的传递函数或状态空间矩阵,得到系统的频域特性。
1.3 时频域建模时频域建模是一种综合了时域和频域特性的建模方法,适合描述非线性和时变系统。
可以使用Matlab的Wavelet工具箱进行时频域建模,通过连续小波变换或离散小波变换,得到系统的时频域特性。
二、控制器设计在系统建模完成后,接下来是设计控制器。
控制器设计的目标是使得系统具有所需的稳定性、响应速度和鲁棒性等性能。
2.1 经典控制器设计Matlab提供了经典控制器的设计函数,如比例控制器(P控制器)、比例积分控制器(PI控制器)和比例积分微分控制器(PID控制器)等。
可以根据系统的特性和性能要求,选择合适的控制器类型和调节参数。
2.2 线性二次调节器设计线性二次调节(LQR)是一种优化控制方法,可以同时优化系统的稳态误差和控制能量消耗。
在Matlab中,可以使用lqr函数进行LQR控制器的设计,通过调整权重矩阵来获得不同的控制性能。
2.3 非线性控制器设计对于非线性系统,经典控制器往往无法满足要求。
控制系统的波特图.pdf
实验4 控制系统的波得图一.实验目的1.利用计算机作出开环系统的波得图;2. 观察记录控制系统的开环频域性能;3.控制系统的开环频率特性分析。
二.实验步骤1.在Windows界面上用鼠标双击matlab图标,即可打开MATLAB命令平台。
2. 练习相关M函数波德图绘图函数:bode(sys)bode(sys,{wmin,wmax})bode(sys,w)[m,p,w]=bode(sys)函数功能:对数频率特性作图函数,即波得图作图。
格式1:给定开环系统的数学模型对象sys作波得图,频率向量w自动给出。
格式2:给定变量w的绘图区间为{wmin,wmax}。
格式3:频率向量w由人工给出。
w的单位为[弧度]/秒,可以由命令logspace得到对数等分的w值。
格式3:返回变量格式,不作图。
m为频率特性G(jω)的幅值向量,m=︱G(jω)︱。
p为频率特性G(jω)的幅角向量,p=arg[ G(jω)],单位为角度(°)。
w为频率向量,单位为[弧度]/秒。
更详细的命令说明,可键入“help bode”在线帮助查阅。
例如,系统开环传递函数为作图程序为num=[10];den=[1 2 10];bode(num,den);绘制波得图如图11所示。
或者给定人工变量w=logspace(-1,1,32);bode(num,den,w);对数分度函数:logspace(d1,d2)logspace(d1,d2,n)函数功能:产生对数分度向量。
格式1:从到101d到102d之间作对数等分分度,产生50个元素的对数等间隔向量。
格式2:从101d到102d之间作对数等分分度,给定等分数n。
半对数绘图函数:semilogx(…)函数功能:半对数绘图命令。
使用格式:横坐标为对数等分分度,其它与plot()命令的使用格式相同。
例如,已知传递函数为作对数幅频特性。
程序为w=logspace(-1,1,32); % w范围和点数nmag=10./((i*w).^2+2.*(i*w)+10); % 计算模值L=20*log(abs(mag)); %模取对数semilogx(w,L); %半对数作图grid % 画网格线幅频特性作图如图12所示。
MATLAB中bode图绘制技巧
Matlab中Bode图的绘制技巧2010-06-04 21:21:48 阅读54 评论0 字号:大中小订阅我们经常会遇到使用Matlab画伯德图的情况,可能我们我们都知道bode这个函数是用来画bode图的,这个函数是Matlab内部提供的一个函数,我们可以很方便的用它来画伯德图,但是对于初学者来说,可能用起来就没有那么方便了。
譬如我们要画出下面这个传递函数的伯德图:s^2H(s)=------------------------------------------------------------------------------------------s^4 + s^3 + s^2 + s +(这是一个用butter函数产生的2阶的,频率范围为[20 20K]HZ的带通滤波器。
) 我们可以用下面的语句:num=[ 0 0];den=[1 ];H=tf(num,den);bode(H)这样,我们就可以得到以下的伯德图:可能我们会对这个图很不满意,第一,它的横坐标是rad/s,而我们一般希望横坐标是HZ;第二,横坐标的范围让我们看起来很不爽;第三,网格没有打开(这点当然我们可以通过在后面加上grid on解决)。
下面,我们来看看如何定制我们自己的伯德图风格:在命令窗口中输入:bodeoptions我们可以看到以下内容:ans =Title: [1x1 struct]XLabel: [1x1 struct]YLabel: [1x1 struct]TickLabel: [1x1 struct]Grid: 'off'XLim: {[1 10]}XLimMode: {'auto'}YLim: {[1 10]}YLimMode: {'auto'}IOGrouping: 'none'InputLabels: [1x1 struct]OutputLabels: [1x1 struct]InputVisible: {'on'}OutputVisible: {'on'}FreqUnits: 'rad/sec'FreqScale: 'log'MagUnits: 'dB'MagScale: 'linear'MagVisible: 'on'MagLowerLimMode: 'auto'MagLowerLim: 0PhaseUnits: 'deg'PhaseVisible: 'on'PhaseWrapping: 'off'PhaseMatching: 'off'PhaseMatchingFreq: 0PhaseMatchingValue: 0我们可以通过修改上面的每一项修改伯德图的风格,比如我们使用下面的语句画我们的伯德图:P=bodeoptions;='on';={[10 40000]};={'manual'};='HZ';num=[ 0 0];den=[1 ];H=tf(num,den);bode(H,P)这时,我们将会看到以下的伯德图:上面这张图相对就比较好了,它的横坐标单位是HZ,范围是[10 40K]HZ,而且打开了网格,便于我们观察-3DB处的频率值。
MATLAB语言与应用(3)
—
s3 3s2 3s 1
H (s) (s 1)(s 2) (s 2 j)(s 2 j)(s 3)
三 根轨迹分析(1-4)
所谓根轨迹是指,当开环系统某一参数从零变到无穷大时,闭环系 统特征方程的根在s平面上的轨迹。一般来说,这一参数选作开环 系统的增益K,而在无零极点对消时,闭环系统特征方程的根就是 闭环传递函数的极点。
求按串联、并联、正反馈、负反馈连接时的系统状态方程及系统1按 单位负反馈连接时的状态方程。
3.模型的转换与连接(5-5)
例:求当K1=250/K1=1000时如图所示的系统的传递函数(表示成零极 增益型式)
二、控制系统的时域分析
时域分析的一般方法 求取系统单位阶跃响应:step() 求取系统的冲激响应:impulse()
频率特性是指系统在正弦信号作用下,稳态输出与输入之比对频率的关系 特性。频率特性函数与传递 X o ( jw) A(w)e j(w) Xi ( jw)
其中 A(w)
X o (w)为幅频特性 X i (w)
(w) o (w) i (w)为相频特性
通常将频率特性用曲线的形式进行表示,包括对数频率特性曲线和幅相频 率特性曲线(简称幅相曲线),MATLAB提供了绘制这两种曲线的函数。
(s 1)(s 3)
串联。
例:求闭环系统的传递函数:
3.模型的转换与连接(4-5)
控制系统工具箱LTI对象运算优先等级为“状态空间>零极增益>传 递函数”,合成系统的系统函数的对象特性应按照环节的最高等级 来确定。
例:已知系统1和系统2的状态方程分别为
x2
0 1
1 3
x2
10u2
y2 1 4x2
根轨迹分析(2-4)
MATLABgui绘制二阶系统的四种分析图
设计一个用户图形界面,完成以下基本功能:添加两个输入框,用来输入下图典型二阶系统的阻尼比和无阻尼自然频率。
根据所输入的值不同,通过下拉列表选择绘制该二阶系统的四种分析图(在四个不同的坐标系中绘制):单位阶跃响应图(在该图上显示该二阶系统的三个性能指标的值:超调量、调节时间、峰值时间)、根轨迹图、乃奎斯特图和波特图(在该图上显示该系统的幅值裕度和相角裕度的值)。
PS:可对图形界面进行个性化设计并添加更为丰富的功能。
将文档后边程序复制到m文本里,并下载gui界面,放到一个文件夹里,将MATLAB的工作目录指定到该文件夹。
地址如下:运行m文本。
在阻尼比和无阻尼自然频率的文本框里输入相应的值,在下拉菜单里选择相应的曲线类型,再点击绘制,则可以在图表中显示对应的曲线,点击退出则关闭图形界面。
例如输入阻尼比1,无阻尼自然频率输入2,点击根轨迹图,则显示如图的曲线。
的曲线。
点击奈奎斯特图则,显示如下:点击波特图则显示如下:程序代码如下:function varargout = lastwork(varargin)gui_Singleton = 1;gui_State = struct('gui_Name', mfilename, ...'gui_Singleton', gui_Singleton, ...'gui_OpeningFcn', @lastwork_OpeningFcn, ...'gui_OutputFcn', @lastwork_OutputFcn, ...'gui_LayoutFcn', [] , ...'gui_Callback', []);if nargin && ischar(varargin{1})gui_State.gui_Callback = str2func(varargin{1});endif nargout[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); elsegui_mainfcn(gui_State, varargin{:});endfunction lastwork_OpeningFcn(hObject, eventdata, handles, varargin) handles.output = hObject;guidata(hObject, handles);function varargout = lastwork_OutputFcn(hObject, eventdata, handles) varargout{1} = handles.output;function pushbutton1_Callback(hObject, eventdata, handles)clc;a = str2num(get(handles.edit1,'string'));b = str2num(get(handles.edit3,'string'));num=[b*b];den1=[1 2*a*b b*b] ;t = 0:0.005:5;sys1=tf(num, den1);c = get(handles.popupmenu1,'value');switch ccase 1X =step(sys1,t);plot(t,X,'r','linewidth',2);[y,x,t]= step(sys1,t);[ymax,tp]=max(y);fengzhi_time = (tp - 1)*0.005;chaotiaoliang = (ymax-1)/1*100;max_overshoot=ymax-1 ;r=1;while r<=length(y)&& y(r)<1.0001r=r+1;endshangshen_time = (r-1)*0.005;s=1001;while y(s)>0.98&&y(s)<1.02s=s-1;endtiaojie_time=(s-1)*0.005 ;fengzhi_time=num2str(fengzhi_time);chaotiaoliang=num2str(chaotiaoliang);chaotiaoliang=[chaotiaoliang,'%'];tiaojie_time=num2str(tiaojie_time);max_overshoot=num2str(max_overshoot);text(3,(max(X)+min(X))/2+(max(X)+min(X))/6,'调节时间:');text(4,(max(X)+min(X))/2+(max(X)+min(X))/6,tiaojie_time);text(3,(max(X)+min(X))/2,'峰值时间:');text(4,(max(X)+min(X))/2,fengzhi_time);text(3,(max(X)+min(X))/2-(max(X)+min(X))/6,'超调量:');text(4,(max(X)+min(X))/2-(max(X)+min(X))/6,chaotiaoliang);case 2rlocus(num,den1)a=get(gca);x=a.XLim;%获取横坐标上下限case 3nyquist(num,den1);case 4bode(sys1);set(findobj(gcf,'type','line'),'linewidth',2,'color','red')[gm,pm] = margin(sys1);text(0.1,100,'相角裕度:');pm=num2str(pm);text(1,100,pm);text(0.1,50,'幅值裕度:');gm=num2str(gm);text(1,50,gm);endgrid on;function edit1_Callback(hObject, eventdata, handles)function edit1_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction edit3_Callback(hObject, eventdata, handles)function edit3_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction listbox1_Callback(hObject, eventdata, handles)function listbox1_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction popupmenu1_Callback(hObject, eventdata, handles)function popupmenu1_CreateFcn(hObject, eventdata, handles)if ispc && isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor','white');endfunction pushbutton2_Callback(hObject, eventdata, handles)close(gcf)。
MATLAB在信号和系统中的应用举例
%把各部分分式对应的时域分量相加
MATLAB在信号和系统中的应用举例
图 9-1 例9-1-1中x1、 x2、 x3对应的四种波形
MATLAB在信号和系统中的应用举例
【例 9-1-2】 编写求任意高阶连续常系数线性系统冲击响 应的程序。
解: 这个问题在第4章4.3.5节介绍多项式函数库时已经打下 基础,在第7章机械振动的例7-3-1又讨论过二阶常系数线性微分 方程的解法,读者可以先看懂那些例题的解法,再看本题。任意 阶次的连续线性系统可用下列线性常微分方程表述:
if k==1 dt=input(′dt= ′); tf=input(′tf= ′); %设定时间数组 t=0∶dt∶tf; h=zeros(1,length(t)); %h的初始化 for i=1∶length(a)-1 %根的数目等于a的长度减1 h = h+ r(i)*exp(p(i)*t); %叠加各根分量
y t0
p12C1
p22C2
pn2Cn
D2y0
MATLAB在信号和系统中的应用举例
初始条件数应该和待定系数的数目相等,构成一个确定 C1、 …、 Cn的线性代数方程组,写成
V*C=Y0
其解为
C=V-1Y0
其中C=[C1,C2,…,Cn]′; Y0=[y0,Dy0,…,Dny0]′
1 1 1
p1
end plot(t,h),grid else,
end
MATLAB在信号和系统中的应用举例
◆ 程序运行结果 例如,给出系统传递函数为
H(s)
s2 7s 1
s(s 1)(s 2)(s 5)
求冲击响应。
根据程序提问依次输入:
a=poly([0,-1,-2,-5])
(完整版)Matlab中Bode图的绘制技巧
Matlab中Bode图的绘制技巧我们经常会遇到使用Matlab画伯德图的情况,可能我们我们都知道bode这个函数是用来画bode图的,这个函数是Matlab内部提供的一个函数,我们可以很方便的用它来画伯德图,但是对于初学者来说,可能用起来就没有那么方便了.譬如我们要画出下面这个传递函数的伯德图:1。
576e010 s^2H(s)=—-—-—-——-----—--——-—-----—-———--—---—--———-—----—--—-—-—---———---——--——--—--—---—-———--——-s^4 + 1.775e005 s^3 + 1。
579e010 s^2 + 2。
804e012 s + 2。
494e014(这是一个用butter函数产生的2阶的,频率范围为[20 20K]HZ的带通滤波器.)我们可以用下面的语句:num=[1.576e010 0 0];den=[1 1。
775e005 1.579e010 2。
804e012 2。
494e014];H=tf(num,den);bode(H)这样,我们就可以得到以下的伯德图:可能我们会对这个图很不满意,第一,它的横坐标是rad/s,而我们一般希望横坐标是HZ;第二,横坐标的范围让我们看起来很不爽;第三,网格没有打开(这点当然我们可以通过在后面加上grid on解决)。
下面,我们来看看如何定制我们自己的伯德图风格:在命令窗口中输入:bodeoptions我们可以看到以下内容:ans =Title:[1x1 struct]XLabel: [1x1 struct]YLabel: [1x1 struct]TickLabel:[1x1 struct]Grid: ’off'XLim: {[1 10]}XLimMode:{'auto'}YLim:{[1 10]}YLimMode: {'auto’}IOGrouping:’none'InputLabels: [1x1 struct]OutputLabels: [1x1 struct]InputVisible:{’on’}OutputVisible: {’on'}FreqUnits: 'rad/sec'FreqScale:'log’MagUnits: 'dB'MagScale: 'linear'MagVisible: 'on'MagLowerLimMode:’auto'MagLowerLim: 0PhaseUnits: ’deg'PhaseVisible:’on'PhaseWrapping:’off’PhaseMatching: ’off'PhaseMatchingFreq: 0PhaseMatchingValue: 0我们可以通过修改上面的每一项修改伯德图的风格,比如我们使用下面的语句画我们的伯德图:P=bodeoptions;P.Grid=’on’;P.XLim={[10 40000]};P。
(完整版)Matlab中Bode图的绘制技巧(精)
Matlab中Bode图的绘制技巧我们经常会遇到使用Matlab画伯德图的情况,可能我们我们都知道bode这个函数是用来画bode图的,这个函数是Matlab内部提供的一个函数,我们可以很方便的用它来画伯德图,但是对于初学者来说,可能用起来就没有那么方便了。
譬如我们要画岀下面这个传递函数的伯德图:1.576e010 s A2H(s= ..........................................................................................................sA4 + 1.775e005 sA3 + 1.579e010 sA2 + 2.804e012 s + 2.494e014(这是一个用butter函数产生的2阶的,频率范围为[20 20K]HZ的带通滤波器。
我们可以用下面的语句:num=[1.576e010 0 0];den=[1 1.775e005 1.579e010 2.804e012 2.494e014];H=tf( num,de n;bode(H这样,我们就可以得到以下的伯德图:可能我们会对这个图很不满意,第一,它的横坐标是rad/s,而我们一般希望横坐标是HZ;第二,横坐标的范围让我们看起来很不爽;第三,网格没有打开(这点当然我们可以通过在后面加上grid on解决)。
F面,我们来看看如何定制我们自己的伯德图风格:在命令窗口中输入:bodeoptio ns我们可以看到以下内容:ans =Title: [1x1 struct] XLabel: [1x1 struct] YLabel: [1x1 struct] TickLabel: [1x1 struct] Grid: 'off' XLim: {[1 10]} XLimMode: {'auto'} YLim: {[1 10]} YLimMode: {'auto'} IOGrouping: 'none' InputLabels: [1x1 struct] OutputLabels: [1x1 struct] InputVisible: {'on'} OutputVisible: {'on'} FreqUnits: 'rad/sec' FreqScale: 'log' MagUnits: 'dB' MagScale: 'linear' MagVisible: 'on' MagLowerLimMode: 'auto' MagLowerLim: 0 PhaseUnits: 'deg' PhaseVisible: 'on' PhaseWrapping: 'off'是这样的,运行命令 ctrlpref ,出现控制系统工具箱的设置页面, Units 改为Hz 就好了PhaseMatchi ng: 'off'PhaseMatchi ngFreq: 0PhaseMatchi ngValue: 0我们可以通过修改上面的每一项修改伯德图的风格,比如我们使用下面的语句画我们的伯德图: P=bodeopti ons;P.Grid='o n';P.XLim={[10 40000]};P.XLimMode={'ma nual'};P.Freq Un its='HZ';num=[1.576e010 00]; den=[1 1.775e0051.579e0102.804e012 2.494e014];H=tf( num,de n;bode(H,P这时,我们将会看到以下的伯德图:上面这张图相对就比较好了,它的横坐标单位是HZ ,范围是[10 40K]HZ ,而且打开了网格,便于我们观察-3DB 处的频率值。
MATLAB绘制自控图像及分析
控制系统的稳定性分析
系统稳定及最小相位系统判据
对于连续时间系统,如果闭环极点全部在S平面左半 平面,则系统是稳定的。 对于离散时间系统,如果系统全部极点都位于Z平面 的单位圆内,则系统是稳定的。 若连续时间系统的全部零极点都位于S左半平面;或 若离散时间系统的全部零极点都位于Z平面单位圆内, 则系统是最小相位系统。
控制系统的频域分析
频域分析的一般方法
频率响应是指系统对正弦输入信号的稳态响应,从频率响应中可以得出 带宽、增益、转折频率、闭环稳定性等系统特征。 频率特性是指系统在正弦信号作用下,稳态输出与输入之比对频率的关 系特性。频率特性函数与传递函数有直接的关系,记为: X ( jw ) G ( jw ) = o = A ( w ) e j ( w ) X i ( jw ) X (w) 其中 A ( w ) = o 为幅频特性 ( w ) = o ( w ) i ( w )为相频特性 X i (w) 频域分析法是应用频率特性研究控制系统的一种典型方法。采用这种方法 可直观地表达出系统的频率特性,分析方法比较简单,物理概念比较明确, 对于诸如防止结构谐振、抑制噪声、改善系统稳定性和暂态性能等问题,都 可以从系统的频率特性上明确地看出其物理实质和解决途经。通常将频率特 性用曲线的形式进行表示,包括对数频率特性曲线和幅相频率特性曲线简称 幅相曲线,MATLAB提供了绘制这两种曲线的函数。 求取系统对数频率特性图(波特图):bode() 求取系统奈奎斯特图(幅相曲线图或极坐标图):nyquist()
仿真时间t的选择
3~ 4 ts = 对于典型二阶系统根据其响应时间的估算公式 ξwn 可以确定。
对于高阶系统往往其响应时间很难估计,一般采用试探的 方法,把t选大一些,看看响应曲线的结果,最后再确定其 合适的仿真时间。 一般来说,先不指定仿真时间,由MATLAB自己确定,然 后根据结果,最后确定合适的仿真时间。 在指定仿真时间时,步长的不同会影响到输出曲线的光滑 程度,一般不易取太大。
Matlab波特图Bode绘制
Matlab波特图绘制在Matlab中,大多时候,我们都是用M语言,输入系统的传递函数后,用bode函数绘制bode图对系统进行频率分析,这样做,本人觉得效率远不如Simulink建模高。
如何在Matlab/Simulink中画bode图,以前也在网上查过些资料,没看到太多有用的参考。
今天做助教课的仿真,又要画电机控制中电流环的bode图,模型已经建好,step response也很容易看出来,可这bode图怎么也出不来,又不愿意用m语言写出传递函数再画。
baidu和google 了好一阵,几乎没有一个帖子说的清清楚楚的,经过一番摸索,终于掌握了Simulink里画bode图的方法。
.其实,Simulink里画bode图,非常的easy,也很方便。
写此文的目的是希望对那些常用Simulink进行仿真希望画bode图又不愿用M语言的新手有所帮助。
以下均是以Matlab R2008a为例。
首先,在simulink里建好model。
如图1,这里需要注意的是,输入和输出要用input port 和output port,这样以后画bode图的时候,系统就会知道是这两个变量之间的关系。
其次,选择线性分析。
Tools->Control Design ->Linear Analysis。
如图2。
将出现如图3所示的Control and Estimation Tools Manager窗口。
第三步,激动人心的时刻到了,哈哈。
如果你是按照前面的步骤来的,那么这时候,你就应该可以直接画出bode图,在窗口的下方,将“Plot linear analysis result in a ”前面的方框打上勾,已打的就不用管了,再在后面的下拉框里选择“bode response plot”,即画output port和input port之间的bode图,再点击“Linearize Model”按钮,就OK了。
其实除了bode图,还可以画其他很多响应曲线,比如step response、impulse response和Nyquist图等等,只需选择相应的step response plot,inpulse response plot或者Nyquist plot等等。
基于MATLAB的控制系统频域设计
基于MATLAB的控制系统频域设计姓名:学院:专业:班级:学号:基于MATLAB的控制系统频域设计一实验目的1. 利用计算机作出开环系统的波特图2. 观察记录控制系统的开环频率特性3. 控制系统的开环频率特性分析二预习要点1.预习Bode图和Nyquist图的画法;2.Nyquist稳定性判据内容。
三实验方法1、奈奎斯特图(幅相频率特性图)对于频率特性函数G(jw),给出w从负无穷到正无穷的一系列数值,分别求出Im(G(jw))和Re(G(jw))。
以Re(G(jw)) 为横坐标, Im(G(jw)) 为纵坐标绘制成为极坐标频率特性图。
MATLAB提供了函数nyquist()来绘制系统的极坐标图,其用法如下:nyquist(a,b,c,d):绘制出系统的一组Nyquist曲线,每条曲线相应于连续状态空间系统[a,b,c,d]的输入/输出组合对。
其中频率范围由函数自动选取,而且在响应快速变化的位置会自动采用更多取样点。
nyquist(a,b,c,d,iu):可得到从系统第iu个输入到所有输出的极坐标图。
nyquist(num,den):可绘制出以连续时间多项式传递函数表示的系统的极坐标图。
nyquist(a,b,c,d,iu,w)或nyquist(num,den,w):可利用指定的角频率矢量绘制出系统的极坐标图。
当不带返回参数时,直接在屏幕上绘制出系统的极坐标图(图上用箭头表示w的变化方向,负无穷到正无穷)。
当带输出变量[re,im,w]引用函数时,可得到系统频率特性函数的实部re和虚部im及角频率点w矢量(为正的部分)。
可以用plot(re,im)绘制出对应w从负无穷到零变化的部分。
2、对数频率特性图(波特图)对数频率特性图包括了对数幅频特性图和对数相频特性图。
横坐标为频率w,采用对数分度,单位为弧度/秒;纵坐标均匀分度,分别为幅值函数20lgA(w),以dB表示;相角,以度表示。
MATLAB提供了函数bode()来绘制系统的波特图,其用法如下:bode(a,b,c,d,iu):可得到从系统第iu个输入到所有输出的波特图。
Matlab画伯德图
我们经常会遇到使用Matlab画伯德图的情况,可能我们我们都知道bode这个函数是用来画bode图的,这个函数是Matlab内部提供的一个函数,我们可以很方便的用它来画伯德图,但是对于初学者来说,可能用起来就没有那么方便了。
譬如我们要画出下面这个传递函数的伯德图:
(这是一个用butter函数产生的2阶的,频率范围为[2020K]HZ的带通滤波器。
)
我们可以用下面的语句:这样,我们就可以得到以下的伯德图
可能我们会对这个图很不满意,第一,它的横坐标是rad/s,而我们一般希望横坐标是HZ;第二,横坐标的范围让我们看起来很不爽;第三,网格没有打开(这点当然我们可以通过在后面加上grid on解决)。
下面,我们来看看如何定制我们自己的伯德图风格:在命令窗口中输入:bodeoptions我们可以看到以下内容:。
高阶系统的频域分析及离散化
目录1利用MATLAB进行系统的频域分析 (1)1.1利用MATLAB绘制系统的波特图 (1)1.1.1绘制波特图 (1)1.1.2稳定裕度 (2)1.1.3截止频率 (3)1.2利用MATLAB绘制系统的奈奎斯特图 (3)1.2.1绘制奈奎斯特图 (3)1.2.2稳定性分析 (3)2控制系统的时域响应 (5)2.1单位阶跃响应及其稳态误差 (5)2.1.1利用MATLAB绘制单位阶跃响应曲线 (5)2.1.2稳态误差的分析与计算 (6)2.2单位斜坡响应及其稳态误差 (6)2.2.1利用MATLAB绘制单位斜坡响应曲线 (6)2.2.2稳态误差的分析与计算 (6)2.3单位加速度响应及其稳态误差 (7)2.3.1利用MATLAB绘制单位加速度响应曲线 (7)2.3.2稳态误差的分析与计算 (7)3高阶系统的离散化 (9)3.1系统离散化 (9)3.2闭环脉冲传递函数 (10)4小结 (14)参考文献 (15)a)8)(s4s s(s b)(s 2++++K高阶系统的频域分析及离散化1 利用MATLAB 进行系统的频域分析1.1 利用MATLAB 绘制系统的波特图1.1.1 绘制波特图根据初始条件:单位反馈系统的开环传递函数是G p = 当K=10,a=1,b=4时,变为G p =)1)(84(4102++++s s s s s )(则系统的闭环传递函数为Φ(s )= (s)G 1(s)G P P + =40181254010234+++++s s s s s(1)根据上述的开环传递函数,使用Matlab 绘制其波特图,如图1所示:图1 使用bode 命令绘制的波特图其MATLAB程序如下:num=[10 40]; %开环传递函数的分子den=conv([1 1 0],[1 4 8]); %开环传递函数的分母w=logspace(-2,2,100); %确定频率范围bode(num,den); %用bode命令绘图1.1.2稳定裕度MATLAB提供的函数margin()可以确定系统的稳定裕度。