线性系统matlab实现
线性系统理论Matlab实践仿真报告
线性系统理论Matlab实验报告1、本题目是在已知状态空间描述的情况下要求设计一个状态反馈控制器,从而使得系统具有实数特征根,并要求要有一个根的模值要大于5,而特征根是正数是系统不稳定,这样的设计是无意义的,故而不妨设采用状态反馈后的两个期望特征根为-7,-9,这样满足题目中所需的要求。
(1)要对系统进行状态反馈的设计首先要判断其是否能控,即求出该系统的能控性判别矩阵,然后判断其秩,从而得出其是否可控;判断能控程序设计如下:>> A=[-0.8 0.02;-0.02 0];B=[0.05 1;0.001 0];Qc=ctrb(A,B)Qc =0.0500 1.0000 -0.0400 -0.80000.0010 0 -0.0010 -0.0200Rc=rank(Qc)Rc =2Qc =0.0500 1.0000 -0.0400 -0.80000.0010 0 -0.0010 -0.0200得出结果能控型判别矩阵的秩为2,故而该系统是完全可控的,故可以对其进行状态反馈设计。
(2)求取状态反馈器中的K,设的期望特征根为-7,-9;其设计程序如下:>> A=[-0.8 0.02;-0.02 0];B=[0.05 1;0.001 0];P=[-7 -9];k=place(A,B,P)k =1.0e+003 *-0.0200 9.00000.0072 -0.4500程序中所求出的k即为所求状态反馈控制器的状态反馈矩阵,即由该状态反馈矩阵所构成的状态反馈控制器能够满足题目要求。
2、(a)要求求该系统的能控型矩阵,并验证该系统是不能控的。
设计程序:>> A=[0 1 0 0 0;-0.1 -0.5 0 0 0;0.5 0 0 0 0;0 0 10 0 0;0.5 1 0 0 0];>> B=[0;1;0;0;0];>> C=[0 0 0 1 0];>> Qc=ctrb(A,B)Qc =0 1.0000 -0.5000 0.1500 -0.02501.0000 -0.5000 0.1500 -0.0250 -0.00250 0 0.5000 -0.2500 0.07500 0 0 5.0000 -2.50000 1.0000 0 -0.1000 0.0500>> Rc=rank(Qc)Rc =4从程序运行的结果可得,系统能控型判别矩阵的秩为4,而系统为5阶系统,故而就验证了该系统为不可控的。
matlab中lsim函数
matlab中lsim函数Matlab中的lsim函数是一个用于实现线性系统的仿真和响应分析的重要工具。
该函数可以模拟线性系统对特定输入信号的时间和频率域响应,并提供了对系统的稳定性、阶跃响应、频率响应等多个方面的分析功能。
在本文中,我将逐步回答关于lsim函数的使用和功能的问题。
第一步:导入lsim函数为了使用lsim函数,首先要在Matlab中导入信号处理工具箱。
可以通过以下命令导入信号处理工具箱:matlab>> clear all>> clc>> addpath('your_toolbox_path') 替换为信号处理工具箱的路径第二步:理解lsim函数的基本语法lsim函数的基本语法如下:matlaby = lsim(sys, u, t)其中,- sys是一个线性系统模型,可以用传递函数形式或状态空间模型表示。
- u是输入信号,可以是一个列向量或一个矩阵。
- t是时间向量,指定系统的采样点。
第三步:使用lsim函数进行线性系统的响应分析假设我们有一个传递函数形式的线性系统:matlabsys = tf([1],[1, 2, 1]);然后,我们定义一个脉冲输入信号,并创建一个时间向量:matlabt = 0:0.1:10;u = zeros(size(t));u(t>=1 & t<=3) = 1;接下来,我们可以使用lsim函数进行系统的响应分析,并绘制输出响应的图像:matlaby = lsim(sys, u, t);plot(t, y);xlabel('Time');ylabel('Output');title('System Response to Pulse Input');第四步:改变系统模型和输入信号在lsim函数中,我们可以使用不同的系统模型和输入信号来模拟不同的情况。
基于MATLAB的线性系统时域分析及仿真
基于MATLAB的线性系统时域分析及仿真MATLAB是一种高级计算软件,广泛应用于各个领域中的科学和工程问题的分析与仿真。
在信号与系统领域,MATLAB提供了强大的工具来进行线性系统的时域分析与仿真。
线性系统是指具有线性特性的系统,它们满足叠加原理和比例原理。
在时域分析中,我们通常关注系统的时域响应,即系统对输入信号的输出响应。
MATLAB提供了许多实用的函数来分析线性系统的时域行为。
首先,我们可以通过建立线性系统模型来研究其时域特性。
MATLAB 中的tf和ss函数可以用于创建传递函数和状态空间模型。
传递函数是输入输出之间的比值关系,而状态空间模型描述了系统的状态变量和输入/输出之间的关系。
可以通过输入系统的差分方程或频域特性来创建或导入线性系统的模型。
接下来,我们可以使用step、impuls和lsim函数来分析线性系统的时域响应。
step函数用于计算系统的单位阶跃响应,impuls函数用于计算系统的单位脉冲响应,而lsim函数用于计算系统对任意输入信号的响应。
这些函数能够绘制系统的时域响应曲线,并提供有关系统稳定性和动态特性的信息。
除了时域分析,MATLAB还提供了一些仿真工具来模拟线性系统的时域行为。
Simulink是MATLAB的一个强大的仿真环境,它可以用于构建复杂的线性系统模型,并通过仿真来分析系统的时域响应。
Simulink提供了丰富的模块库,包括线性系统模型、输入信号源和观测器等,使用户能够快速搭建系统模型并进行仿真。
在仿真过程中,Simulink提供了多种仿真方法,如固定步长仿真和变步长仿真。
固定步长仿真通过以固定的时间步长进行仿真,可以在仿真过程中保持较高的精度。
变步长仿真则根据系统响应的动态特性自适应地调整仿真步长,以确保在不同仿真阶段获取较高的精度和仿真效率。
总之,MATLAB提供了强大的工具来进行线性系统的时域分析与仿真。
通过建立线性系统模型、使用时域分析函数和Simulink仿真工具,用户可以方便地研究和分析系统的时域特性,并得到系统的时域响应曲线,进而了解系统的稳定性、动态特性和性能等信息。
现代控制理论的MATLAB实现
现代控制理论的MATLAB实现现代控制理论是控制工程中一门重要的学科,它研究如何设计和分析控制系统以满足一定的性能指标。
MATLAB是一种功能强大的科学计算和工程仿真软件,广泛应用于控制系统设计与分析。
本文将介绍现代控制理论的一些常见方法在MATLAB中的实现。
1.线性系统的状态空间表示线性系统的状态空间表示是现代控制理论的核心内容之一、在MATLAB中,可以使用`ss`命令创建线性系统的状态空间模型。
例如,假设存在一个二阶线性时不变系统,其传递函数为:![Transfer Function](transfer_function.png)可以使用以下代码将其转换为状态空间模型:```matlabnum = [1];den = [1, 1, 1];sys = tf(num, den);ss_sys = ss(sys);```2.线性系统的传递函数表示传递函数是描述线性系统输入输出关系的一种常用表示方法。
在MATLAB中,可以使用`tf`命令创建线性系统的传递函数模型。
例如,假设存在一个二阶线性时不变系统,其状态空间描述为:```matlabA=[0,1;-1,-1];B=[0;1];C=[1,0];D=0;ss_sys = ss(A, B, C, D);```可以使用以下代码将其转换为传递函数模型:```matlabtf_sys = tf(ss_sys);```3.常见控制器的设计与分析现代控制理论中常用的控制器设计方法包括PID控制器、根轨迹法、频率域分析等。
在MATLAB中,可以使用`pid`命令创建PID控制器,并使用`rlocus`命令绘制根轨迹图。
例如,创建一个PID控制器:```matlabKp=1;Kd=0.1;pid_controller = pid(Kp, Ki, Kd);```绘制根轨迹图:```matlabsys = tf([1], [1, 1, 1]);rlocus(sys);```4.系统的频率响应分析频率响应分析是现代控制理论中常用的系统性能评估方法之一、在MATLAB中,可以使用`bode`命令绘制系统的频率响应曲线。
线性系统稳定性分析的MATLAB分析方法
MATLAB设计___________________________________________________ 线性系统稳定性分析的MATLAB分析方法电气工程学院班级:10自动化3班学号:姓名:指导老师:线性系统稳定性分析的MATLAB分析方法摘要:稳定是控制系统的重要性能,也是系统能够正常运行的首要条件。
控制系统在实际运行过程中,总会受到外界和内部一些因素的干扰,例如负载和能源的波动、系统参数的变化、环境条件的改变等等。
如果系统不稳定,就会在任何微小的扰动作用下偏离原来的平衡状态,并随时间的推移而发散。
因而,如何分析系统的稳定性并提出系统稳定的措施,是自动控制理论的基本任务之一。
由于MATLAB拥有丰富的数据类型和结构、友善的面向对象、快速精美的图形可视、更广泛的数学和数据分析资源控制系统工具箱的应用开发工具。
所以应用MATLAB来分析系统的稳定性将给系统稳定性的分析带来很大的便利。
关键词:自动控制理论、线性系统、稳定性、MATLAB引言:本次作业是运用MATLAB来分析线性系统的稳定性,是对MATLAB 加深理解和运用的一个重要环节。
本次作业以自动控制基础中线性系统稳定性的如何分析来开展。
通过自动控制中分析线性系统稳定性的原理与方法,以MATLAB为分析工具完成这次作业。
1.自动控制技术介绍在现代科学技术的众多领域中,自动控制技术起着越来越重要的作用。
所谓自动控制,就是指没有人直接参与的情况下,利用外加的设备或装置(称控制装置或控制器),使机器、设备或生产过程(统称被控对象)的某个工作状态或参数(被控量)自动地按照预定的规律运行。
1.1稳定性的基本概念任何系统在扰动作用下都会偏离原平衡状态,产生初始偏差。
所谓稳定性,是指系统在扰动消失后,由初始偏差状态恢复到原平衡状态的性能。
根据李雅普诺夫稳定性理论,线性系统的稳定性可叙述为:若线性控制系统在初始扰动的影响下,其动态过程随时间的推移逐渐衰减并趋于零(原平衡工作点),则称系统渐近稳定,简称稳定;反之,若在初始扰动影响下,系统的动态过程随时间的推移而发散,则称系统不稳定。
信号与线性系统分析(基于MATLAB的方法与实现)第九章
已知周期半波余弦信号与周期全波余弦信号的波形如图所示,用MATLAB编程求出它的傅立叶系数,绘出其直流、一次、二次、三次、四次及五次谐波叠加后的波形图,并将其与原周期信号的时域波形进行比较,观察周期信号的分解与合成过程。
% dm09101% 观察周期方波信号的分解与合成% m:傅里叶级数展开的项数display('Please input the value of m (傅里叶级数展开的项数)'); % 在命令窗口显示提示信息m = input('m = '); % 键盘输入傅里叶级数展开的项数t = -2*pi:0、01:2*pi; % 时域波形的时间范围-2π~2π,采样间隔0、01n = round(length(t)/4); % 根据周期方波信号的周期,计算1/2周期的数据点数f = cos(t)、*(t<(-3*pi/2))+cos(t)、*((t>(-pi/2))&(t<(pi/2)))+cos(t)、*(t>3*pi/2); %构造周期方波信号y = zeros(m+1,max(size(t)));y(m+1,:) = f';figure(1);plot(t/pi,y(m+1,:),'LineWidth',2); %绘制方波信号grid; %在图形中加入栅格axis([-2 2 -0、5 1、5]); %指定图形显示的横坐标范围与纵坐标范围title('周期信号'); %给显示的图形加上标题xlabel('单位pi','Fontsize', 8); %显示横坐标单位x = zeros(size(t));kk = '直流分量';pause;k=1;x = x+1/pi;y(1,:) = x; %计算各次谐波叠加与plot(t/pi,y(m+1,:),'LineWidth',2);hold on;plot(t/pi,y(1,:),'r','LineWidth',3); %绘制谐波叠加信号 hold off;grid;axis([-2 2 -0、5 1、5]);title(strcat(kk));xlabel('单位pi','Fontsize', 8);kk = strcat(kk,'与第',num2str(k));pause;k=k+1;x = x+0、5、*cos(t);y(2,:) = x; %计算各次谐波叠加与plot(t/pi,y(m+1,:),'LineWidth',2);hold on;plot(t/pi,y(2,:),'r','LineWidth',3); %绘制谐波叠加信号 hold off;grid;axis([-2 2 -0、5 1、5]);title(strcat(kk,'次谐波叠加'));xlabel('单位pi','Fontsize', 8);kk = strcat(kk,'、',num2str(k));pause;x = x+2/(3、*pi)、*cos(2、*t);y(3,:) = x; %计算各次谐波叠加与plot(t/pi,y(m+1,:),'LineWidth',2);hold on;plot(t/pi,y(3,:),'r','LineWidth',3); %绘制谐波叠加信号 hold off;grid;axis([-2 2 -0、5 1、5]);title(strcat(kk,'次谐波叠加'));xlabel('单位pi','Fontsize', 8);kk = strcat(kk,'、',num2str(k+2));pause;x = x-2/(15、*pi)、*cos(4、*t);y(4,:) = x; %计算各次谐波叠加与plot(t/pi,y(m+1,:),'LineWidth',2);hold on;plot(t/pi,y(4,:),'r','LineWidth',3); %绘制谐波叠加信号 hold off;grid;axis([-2 2 -0、5 1、5]);title(strcat(kk,'次谐波叠加'));xlabel('单位pi','Fontsize', 8);pause;plot(t/pi,y(1:m+1,:),'LineWidth',3);grid;axis([-2 2 -0、5 1、5]);title('各次谐波叠加波形');xlabel('单位pi','Fontsize', 8);% End-2-1.5-1-0.500.51 1.52-0.500.511.5周期信号单位pi-2-1.5-1-0.500.51 1.52-0.500.511.5直流分量单位pi-2-1.5-1-0.500.51 1.52-0.500.511.5直流分量和第1次谐波叠加单位pi-2-1.5-1-0.500.51 1.52-0.500.511.5直流分量和第1、2次谐波叠加单位pi-2-1.5-1-0.500.51 1.52-0.500.511.5直流分量和第1、2、4次谐波叠加单位pi-2-1.5-1-0.500.51 1.52-0.500.511.5各次谐波叠加波形单位pi% dm09201% 绘制周期信号的频谱特性 function CTFS_RP% 以周期矩形脉冲信号为例,计算其频谱特性% Nf:级数分解的谐波次数,由键盘输入% Nn:输出数据的准确位数% a0:直流项系数% an:第1,2,3,、、、次谐波余弦项展开系数% bn:第1,2,3,、、、次谐波正弦项展开系数% tao:周期矩形脉冲信号脉宽,由键盘输入% T:周期矩形脉冲信号周期,由键盘输入display('Please input the value of T, tao and Nf'); %命令窗口提示用户输入参数T = input('T = ');tao = input('tao = ');Nf = input('Nf = ');syms t n k x ; %定义符号变量Nn = 32; %输出数据的位数为32位an = zeros(Nf+1,1); %分配an系数数组bn = zeros(Nf+1,1); %分配bn系数数组x=(heaviside(t+tao/2)-heaviside(t-tao/2))*cos((pi/tao)*t); %构造一个周期的脉冲信号u(t+tao/2)-u(t-tao/2)A0 =2*int(x,t,-T/2,T/2)/T; %求出直流项a0As=2*int(x*cos(2*pi*n*t/T),t,-T/2,T/2)/T; %求出余弦项系数anBs=2*int(x*sin(2*pi*n*t/T),t,-T/2,T/2)/T; %求出正弦项系数bnan(1) = double(vpa(A0,Nn)); %获取参数组A0所对应的ASCII码数值数组for k=1:Nfan(k+1)=double(vpa(subs(As,n,k),Nn)); %获取参数组As所对应的ASCII码数值数组bn(k+1)=double(vpa(subs(Bs,n,k),Nn)); %获取参数组Bs所对应的ASCII码数值数组endcn = sqrt(an、*an+bn、*bn); %计算幅度谱t = -T*2:0、001:T*2;xx =(heaviside(t+tao/2)-heaviside(t-tao/2))、*cos((pi/tao)、*t);for kk=1:2xx=xx+(heaviside(t+tao/2+kk*T)-heaviside(t-tao/2+kk*T))、*cos((pi/tao)、*(t+kk*T))+(heaviside(t+tao/2-kk*T)-heaviside(t-tao/2-kk*T))、*cos((pi/tao)、*(t-kk*T)); %用pulstran函数生成矩形脉冲信号endsubplot(211); %将显示窗口分为3个子窗口,并指向第1个子窗口clear subplot;plot(t,xx); %绘制周期矩形脉冲信号axis([-T*2 T*2 0 1、1]); %指定坐标系范围%title('周期矩形脉冲信号','Fontsize',8); %标注标题s1 = strcat('周期矩形脉冲信号 T=',num2str(T),' Tao=',num2str(tao),'t');xlabel(s1,'Fontsize',8); %x轴标签subplot(212); %指向第2个子窗口k = 0:Nf;stem(k,cn); %绘制幅度谱hold on;plot(k,cn); %绘制幅度谱包络线xlabel('幅度谱 \omega','Fontsize',8);% EndPlease input the value of T, tao and Nf T = 2*pi tao = pi Nf = 30-10-55100.20.40.60.81周期矩形脉冲信号 T=6.2832 T ao=3.1416t幅度谱Please input the value of T, tao and Nf T = 2*pi tao = 2*pi Nf = 30-10-55100.20.40.60.81周期矩形脉冲信号 T=6.2832 T ao=6.2832t幅度谱 ωPlease input the value of T, tao and Nf T = 20*pi tao = pi Nf = 30-100-50501000.20.40.60.81周期矩形脉冲信号 T=62.8319 T ao=3.1416t幅度谱 ωPlease input the value of T, tao and Nf T = 20*pi tao = 4*pi Nf = 30-100-50501000.20.40.60.81周期矩形脉冲信号 T=62.8319 T ao=12.5664t幅度谱Please input the value of T, tao and Nf T = 200*pi tao = pi Nf = 30-1000-500050010000.51周期矩形脉冲信号 T=628.3185 T ao=3.1416t051015202530-3幅度谱。
自动控制原理的MATLAB仿真与实践第5章 线性系统的频域分析
函数模型,如:tf(), zpk(), ss()。 bode(num,den):num,den分别为传递函数的分子与
margin(G);[Gm,Pm,Wcg,Wcp]= margin(G): 直接求出系统G的幅值裕度和相角裕度。 其中:Gm幅值裕度;Pm相位裕度;Wcg幅值裕度 处对应的频率ωc;Wcp相位裕度处对应的频率ωg。
nichols(G);nichols(G,w):绘制单位反馈系统开环传 递尼科尔斯曲线。
20
>>clear; num=[2, 3];den=[1, 2, 5, 7]; %G(s)的分子分母 多项式系数向量
p=roots(den) 求根结果:
%求系统的极点
p=
-0.1981 + 2.0797i
-0.1981 - 2.0797i
-1.6038 可见全为负根,则s右半平面极点数P=0。 绘制Nyquist曲线: >> nyquist(num,den) %绘制Nyquist曲线
本节分别介绍利用MATLAB进行频域绘图和频 率分析的基本方法。
6
5.2.1 Nyquist曲线和Bode图
MATLAB频率特性包括幅频特性和相频特性。 当用极坐标图描述系统的幅相频特性时,通常称为 奈奎斯特(Nyquist)曲线;用半对数坐标描述系 统的幅频特性和相频特性时,称为伯德(Bode) 图;在对数幅值-相角坐标系上绘制等闭环参数( M和N)轨迹图,称为尼克尔斯(Nichols)图。
matlab lmi工具箱使用实例
MATLAB(Matrix Laboratory)是一款广泛应用于科学计算和工程领域的专业软件,其功能强大、灵活性高,并且具有丰富的工具箱支持。
LMI(Linear Matrix Inequality)工具箱是MATLAB中的一种工具箱,用于解决线性矩阵不等式相关的问题。
本文将介绍LMI工具箱的基本使用方法,并结合具体实例进行详细讲解。
一、LMI工具箱的安装1.确保已经安装了MATLAB软件,并且软件版本是R2015b及以上版本。
只有在这些版本中,LMI工具箱才会被自动安装。
2.在MATLAB的命令行中输入“ver”,可以查看当前安装的工具箱列表,确认LMI工具箱是否已经成功安装。
二、LMI工具箱的基本功能1. LMI工具箱主要用于解决线性矩阵不等式问题,例如矩阵的稳定性分析、最优控制问题等。
2. LMI工具箱提供了一系列的函数和工具,能够方便地构建和求解线性矩阵不等式问题,同时也包括了一些经典的稳定性分析方法和控制器设计方法。
三、LMI工具箱的基本使用方法1. 定义变量:在使用LMI工具箱时,首先需要定义相关的变量。
可以使用“sdpvar”函数来定义实数变量,使用“sdpvar”函数和“size”函数可以定义矩阵变量。
2. 构建约束:在定义变量之后,需要构建线性矩阵不等式的约束条件。
可以使用“sdpvar”变量的线性组合来构建约束条件,使用“>=”来表示大于等于关系。
3. 求解问题:构建好约束条件之后,即可使用“optimize”函数来求解线性矩阵不等式问题。
在求解问题时,可以指定优化的目标函数和一些额外的约束条件。
四、LMI工具箱的实例应用下面我们通过一个具体的实例来演示LMI工具箱的使用方法。
假设有一个线性时不变系统,其状态方程可以表示为:$\dot{x} = Ax + Bu$其中,A和B分别为系统的状态矩阵和输入矩阵。
我们希望设计一个状态反馈控制器K,使得系统在闭环下能够保持稳定。
MATLAB线性系统-PPT课件
1.1 连续时间模型的形式
1、状态 Du
在MATLAB中,这个系统写为A、B、C、D四个矩 阵的形式即可,当然矩阵维数要匹配。
也可用SYS = SS(A,B,C,D) 建立ss模型,
SYS = SS(A,B,C,D,Ts) 建立离散ss模型。
%控制系统模型的描述方式 a=[1 2;3 4];b=[0;1];c=[1 1];d=1; a = x1 f=ss(a,b,c,d)
f1=ss(a,b,c,d,0.1)
a = x1 x2 x1 1 2 x2 3 4 c = x1 x2 y1 1 1 b = u1 x1 0 x2 1 d = u1 y1 1
x2 x1 1 2 x2 3 4 c = x1 x2 y1 1 1
b = u1 x1 0 x2 1 d = u1 y1 1
Continuous-time model.
Sampling time: 0.1 Discrete-time model.
2、传递函数描述法
G ( s ) n n 1 n 2 den ( 1 ) s den ( 2 ) s den ( 3 ) s ... den ( n ) s den ( n 1 )
m m 1 num ( 1 ) s num ( 2 ) s ... num ( m 1 ) s num ( m )
Transfer function: s+1 ------------s^2 + 6 s + 7 numb = 0 1 denb = 1 6
1 7
1.3 模型之间的转换
一、线性系统模型之间的转换 ss—状态空间、tf—传递函数、zp—零极点: [num,den]=ss2tf(a,b,c,d,iu) 状态空间到传函 [z,p,k]=ss2zp(a,b,c,d,iu) 状态空间到零极 [a,b,c,d]=tf2ss(num,den) 传函到状态空间 [z,p,k]=tf2zp(num,den) 传函到零极 [a,b,c,d]=zp2ss(z,p,k) 零极到状态空间 [num,den]=zp2tf(z,p,k) 零极到传函 [r,p,k]=residue(num,den) 传函到部分分式 [num,den]=(r,p,k) 部分分式到传函
线性系统的根轨迹分析平台设计
• 110•根轨迹作为一种经典的分析方法,经常被用来进行线性系统分析。
但是对于复杂系统手绘根轨迹非常困难,针对这个问题,本文利用MATLAB 中的GUI 设计了根轨迹仿真分析平台。
线性系统的传递函数可以表示为,一般多项式形式、乘积多项式形式和零、极点三种形式,本文所设计的仿真分析平台可以绘出三种传递函数表示的系统根轨迹,还可以零极点改变对系统根轨迹的影响。
该仿真平台很大程度上减少了线性系统根轨迹分析的工作量,也使根轨迹的分析结果变得更加直观。
线性系统的闭环特征根决定系统性能,当系统参数发生变化时,闭环特征根也会生成相应的根轨迹,所以根轨迹与系统性能之间也有着比较密切的联系。
根轨迹是经典控制理论中,分析和设计线性定常系统最常用的图解方法,特别在进行多回路高阶系统的分析时,应用根轨迹法比用其他方法更加方便,因此,根轨文本框,程序加在所放置的绘图按钮的回调函数callback 下,且必须在句柄后输入根轨迹所显示的轴位置即axes 。
首先在该子界面的可编辑文本框中输入所要绘制的开环传递函数的分子分母的系数,输入后在可选择按钮中选择所需绘制根轨迹图形样式,操作完成就会在右边轴中显示出所要求的根轨迹图形。
随着光标移动可以显示出所指该点的开环增益、闭环极点、最大超调量和自然振荡角频率。
图1 根轨迹仿真平台主界面线性系统的根轨迹分析平台设计德州学院能源与机械学院 孙秀云图2 一般多项式形式绘制根轨迹界面迹在工程实践中获得了广泛的应用。
对于低阶的系统,我们可以利用解析的方法直接求出闭环特征根随系统参数变化的曲线,但是对于高阶系统,我们很难手绘出其根轨迹,尤其是在课堂上讲解时,更是不可能短时间绘出一个复杂系统的根轨迹。
为了便于在课堂上快速绘制出系统根轨迹,便于讲解根轨迹对系统性能的影响,本文设计了线性系统根轨迹仿真分析平台。
1 系统设计本文所设计的根轨迹仿真分析平台,根据设定的线性系统模型,可以快速地绘制出该系统的根轨迹曲线。
实验一 基于matlab语言的线性离散系统的z变换分析法1(1)
实验一基于MATLAB语言的线性离散系统的Z变换分析法一、实验目的1. 学习并掌握 Matlab 语言离散时间系统模型建立方法;2.学习离散传递函数的留数分析与编程实现的方法;3.学习并掌握脉冲和阶跃响应的编程方法;4.理解与分析离散传递函数不同极点的时间响应特点。
二、实验工具1. MATLAB 软件(6.5 以上版本);2. 每人计算机一台。
三、实验内容1. 在Matlab语言平台上,通过给定的离散时间系统差分方程,理解课程中Z变换定义,掌握信号与线性系统模型之间Z传递函数的几种形式表示方法;2. 学习语言编程中的Z变换传递函数如何计算与显示相应的离散点序列的操作与实现的方法,深刻理解课程中Z变换的逆变换;3. 通过编程,掌握传递函数的极点与留数的计算方法,加深理解G(z)/z 的分式方法实现过程;4. 通过系统的脉冲响应编程实现,理解输出响应的离散点序列的本质,即逆变换的实现过程;5. 通过编程分析,理解系统的Z传递函数等于单位脉冲响应的Z变换,并完成响应的脉冲离散序列点的计算;6. 通过程序设计,理解课程中脉冲传递函数极点对系统动态行为的影响,如单独极点、复极点对响应的影响。
四、实验步骤1.创建系统How to create digital system g Four examples are as follows:numg=[0.1 0.03 -0.07];deng=[1 -2.7 2.42 -0.72];g=tf(numg,deng,-1)get(g);[nn dd]=tfdata(g,'v')[zz,pp,kk]=zpkdata(g,'v')Unite circle region with distrbuting zeros points and poles points hold onpzmap(g), hold offaxis equal运行结果:2.转换为零极点标准形式Convert from tf(z-function) to zpk(z-function) Part C exercise form gg=zpk(g)[zz,pp,kk tts]=zpkdata(gg,'v')[z,p k,ts]=zpkdata(g,'v')运行结果:3.四个例子Four examples are as follows:Part A exerciseeg1mun=[1.25 -1.25,0.30];eg1den=[1 -1.05 0.80 -0.10];eg1=tf(eg1mun,eg1den,-1);eg1zpk=zpk(eg1);[zz1,pp1,kk1,tts1]=zpkdata(eg1zpk,'v');Part B exerciseeg2mun=[0.84 -0.062 -0.156 0.058];eg2den=[1 -1.03 0.22 0.094 0.05];eg2=tf(eg2mun,eg2den,-1);eg2zpk=zpk(eg2);[zz2,pp2,kk2,tts2]=zpkdata(eg2zpk,'v');Part C exercisezz3=[-0.2 0.4];pp3=[0.6 0.5+0.75i 0.5-0.75i 0.3];kk3=150;tts3=-1;eg3zpk=zpk(zz3,pp3,kk3,tts3);eg3=tf(eg3zpk);Part D exercisezz4=[-0.3 0.4+0.2i 0.4-0.2i];pp4=[-0.6 -0.3,0.5 0.6];kk4=5;tts4=-1;eg4zpk=zpk(zz4,pp4,kk4,tts4);eg4=tf(eg4zpk);4.留数法Residue method and impluse response numg=[2 -2.2 0.65];deng=[1 -0.6728 0.0463 0.4860]; [rGoz, pGoz,other]=residue(numg,[deng 0]) [mag_pGoz,theta_pGoz] =xy2p(pGoz)[mag-rGoz,theta-rGoz]=xy2p(rGoz)G=tf(numg,deng,-1)impulse(G)[y,k]=impulse(G);stem(k,y,'filled');impulse(G)运行结果:5.复杂极点响应When transfer function is G(Z) with complex ,t=t*ts;pole of z=e^(+-j*30*pi/3) and z=-0.5,as well as its gain value is unit step signal,its collecting cycle is 0.5 second,how to analyze its response.gcfts=0.3;num=[1 0.5];den=conv([1 -exp(i*pi/3)],[1 -exp(-i*pi/3)]);g1=tf(num,den,ts)[y,k]=impulse(g1,20);stem(k,y,'filled'),grid运行结果:6.重极点响应How to analyze response with repeating poles dtime=[0:90];y(k+2)-1.8y(k+1)+0.81y(k)=3u(k+1)-1.2u(k) yi=impulse(gstep,dtime)gcfnum=[3 -1.2];den=[1 -1.8 0.81];[rGoz, pGoz,other]=residue(num,[den 0])t=0:60;y=rGoz(2,1).*(t.*(pGoz(2,1).^(t-1)))+rGoz(1,1).*(pGoz(1,1).^(t)) y1=zeros(1,61);y1(1,1)=rGoz(3,1);y=y+y1;t=ts*t;stem(t,y,'filled'),gridSpecial example about difference real pole tosystem response[rGoz,pGoz,other]=residue(num,[den,0])num1=[rGoz(1) 0];den1=[1 -pGoz(1)]gg1=tf(num1,den1,ts)[y,t]=impulse(gg1,50)stem(t,y,'filled'),grid运行结果:7.阶跃响应numg=[2 -2.2 0.56];deng=[1 -0.6728 0.0463 0.4860];g=tf(numg,deng,1);numgstep=[numg 0];dengstep=conv(deng,[1 -1]);gstep=tf(numgstep,dengstep,1)dtime=[0:90];yi=impulse(gstep,dtime)subplot(2,1,1)stem(dtime,yi,'filled')ys=step(g,dtime);subplot(2,1,2)stem(dtime,ys,'filled')dcgain(g)ys_ss=ys(end)ys_ss=ys(max(dtime))运行结果:Example 1: Analysis of subsection input function subplot(1,1,1)num=[2 -2.2 0.56];den=[1 -0.6728 0.0463 0.4860];ts=0.2;g=tf(num,den,ts);dtime=[0:ts:8]';u=2.0*ones(size(dtime));ii=find(dtime>=2.0); u(ii)=0.5;y=lsim(g,u,dtime);stem(dtime,y,'filled'),gridhold onplot(dtime,u,'o')hold offtext(2.3,-1.8,'output')text(1.6,2.3,'input')运行结果:五、实验思考1、根据实验结果,分析离散传递函数不同极点的时间响应特点。
线性时不变系统在MATLAB环境下的模型建立
连续系统 控制系统 离散系统
内部模型:状态空间方程(N 个一阶微分方程) 外部模型
内部模型:状态空间方程(N 个一阶差分方程) 图 1 控制系统模型
对于线性时不变系统(Linear Time-Invariant System) 来说通常有五种基本系 统模型:微分方程模型,传递函数模型(Transfer Function models),零极点增益模 型(Zero/Pole/Gain models),状态空间模型(State-Space models),频率响应数据模 型(Frequency Response Date models)。 对于线性离散时不变系统,有差分方程模型,脉冲转递函数模型,零极点增 益模型,状态空间模型。
>> h=[tf([1 -1],[1 2 10]),tf(1,[1 3 0 0])]
s−1 1 s 2 + 2s + 10 s 3 + 3s 2
Transfer function from input 1 to output: s-1 ------------------s^2 + 2 s + 10 Transfer function from input 2 to output: 1 ---------------s^3 + 3 s^2
x = Ax + Bu y = Cx 在 MATLAB 下实现为:
>> h=ss([0 1;-5 -2],[0;3],[0 1],0) a= x1 x1 x2 0 1
x2 -5 -2 b= u1 x1 x2 c= x1 x2 y1 d= 0 1 0 3
线性系统理论matlab应用
例2-3 某线性连续系统的状态方程为
x Ax Bu
y Cx Du
其中
0 1 0
A
0
0
1
6 11 6
1 0 B 2 1
0 2
1 1 0 C 2 1 1
D
0 0
0 0
采用零阶保持器将其离散化,设采样周期为0.1秒。求离散化的状态 方程模型。
解 输入以下语句,其中D=zeros(2)表示,将D赋值为2×2维的全零 矩阵。
函数的作用是合并同类项,而ilaplace( )函数的作用是求取拉 普拉斯逆变换,函数det( )的作用是求方阵的行列式。
第15页/共50页
程序执行结果
这表示
(t)
2 2
et et
e2t 2 e2t
et e2t
e
t
2
e2t
2 et e2t
x(t
)
2
et
2
e2t
第16页/共50页
2.2 线性非齐次状态方程的解
第19页/共50页
语句执行的结果为
计算结果表示系统离散化后的 状态方程为
0.9991 0.0984 0.0041
0.1099 0.0047
x(k 1) 0.0246
0.9541
0.0738
x(k)
0.1959
0.0902u(k)
MATLAB处理线性系统数学模型
实验一用MATLAB处理线性系统数学模型[说明]一个控制系统主要由被控对象、测量装置、控制器和执行器四大部分构成。
MATLAB软件的应用对提高控制系统的分析、设计和应用水平起着十分重要的作用。
采用MATLAB软件仿真的关键问题之一是在MATLAB软件平台上怎样正确表示被控对象的数学模型。
[实验目的]1.了解MATLAB软件的基本特点和功能;2.掌握线性系统被控对象传递函数数学模型在MATLAB环境下的表示方法及转换;3.掌握多环节串联、并联、反馈连接时整体传递函数的求取方法;4.掌握在SIMULINK环境下系统结构图的形成方法及整体传递函数的求取方法;5.了解在MATLAB环境下求取系统的输出时域表达式的方法。
[实验指导]一、被控对象模型的建立在线性系统理论中,一般常用的描述系统的数学模型形式有:(1)传递函数模型——有理多项式分式表达式(2)传递函数模型——零极点增益表达式(3)状态空间模型(系统的内部模型)这些模型之间都有着内在的联系,可以相互进行转换。
1、传递函数模型——有理多项式分式表达式设系统的传递函数模型为1110111......)()()(a s a s a s a b s b s b s b s R s C s G n n n n m m m m ++++++++==----对线性定常系统,式中s 的系数均为常数,且a n 不等于零。
这时系统在MATLAB 中可以方便地由分子和分母各项系数构成的两个向量唯一地确定,这两个向量常用num 和den 表示。
num=[b m ,b m-1,…,b 1,b 0]den=[a n ,a n-1,…,a 1,a 0]注意:它们都是按s 的降幂进行排列的。
分子应为m 项,分母应为n 项,若有空缺项(系数为零的项),在相应的位置补零。
然后写上传递函数模型建立函数:sys=tf(num,den)。
这个传递函数便在MATLAB 平台中被建立,并可以在屏幕上显示出来。
MATLAB线性系统时域响应分析实验
MATLAB线性系统时域响应分析实验线性系统时域响应分析是信号与系统课程中非常重要的一部分,通过掌握该实验可以深入了解线性系统的特性和性能。
本实验将介绍如何利用MATLAB软件进行线性系统时域响应分析。
一、实验目的1.掌握线性时不变系统的时域响应分析方法;2.学会利用MATLAB软件进行线性系统的时域响应分析;二、实验原理线性系统时域响应分析是指对于给定的线性时不变系统,通过输入信号和系统的冲激响应,求解系统的输出信号。
其基本原理可以用以下公式表示:y(t) = Σ[h(t)*x(t-tk)]其中,y(t)表示系统的输出信号,x(t)表示系统的输入信号,h(t)表示系统的冲激响应,tk表示冲激响应的时刻。
在MATLAB中,我们可以利用conv函数来计算线性系统的时域响应。
具体步骤如下:步骤一:定义输入信号x(t)和系统的冲激响应h(t);步骤二:利用conv函数计算系统的时域响应y(t);步骤三:绘制输入信号、冲激响应和输出信号的图像;步骤四:分析系统的特性和性能。
三、实验内容1.定义输入信号x(t)和系统的冲激响应h(t);2. 利用conv函数计算系统的时域响应y(t);3.绘制输入信号、冲激响应和输出信号的图像;4.分析系统的特性和性能,包括时域特性、频域特性、稳定性等。
四、实验步骤1.打开MATLAB软件并新建一个脚本文件;2.定义输入信号x(t)和系统的冲激响应h(t);3. 利用conv函数计算系统的时域响应y(t);4.绘制输入信号、冲激响应和输出信号的图像;5.分析系统的特性和性能,包括时域特性、频域特性、稳定性等;6.运行脚本文件,并观察输出图像和分析结果;7.根据实验结果和分析结果,进行总结和讨论。
五、实验总结通过本次实验,我们掌握了利用MATLAB软件进行线性系统时域响应分析的方法。
实验中,我们定义了输入信号和系统的冲激响应,并利用conv函数计算了系统的时域响应。
然后,我们绘制了输入信号、冲激响应和输出信号的图像,并分析了系统的特性和性能。
信号与系统matlab实验线性时不变系统的时域分析(最新整理)
答案
1. x n hn u n u n 4 ;
nx=0:9;x=ones(1,length(nx)); nh=0:4;h=ones(1,length(nh)); y=conv(x,h); % 下限=下限1+下限2 ny_min=min(nx)+min(nh); % 上限=上限1+上限2 ny_max=max(nx)+max(nh); ny=ny_min:ny_max; subplot(3,1,1);stem(nx,x); xlabel('n');ylabel('x(n)');axis([ny_min ny_max 0 max(x)]); subplot(3,1,2);stem(nh,h); xlabel('n');ylabel('h(n)');axis([ny_min ny_max 0 max(h)]); subplot(3,1,3);stem(ny,y); xlabel('n');ylabel('x(n)*h(n)');axis([ny_min ny_max 0 max(y)]);
到连续卷积的数值近似,具体算法如下:
y=conv(x,h)*dt
% dt 为近似矩形脉冲的宽度即抽样间隔
例 2-2:采用不同的抽样间隔 值,用分段常数函数近似 x t u t u t 1 与
h t sin t u t u t π 的 卷 积 , 并 与 卷 积 的 解 析 表 达 式
x(t)
h(t)
1 0.5
0 0 0.5 1 1.5 2 2.5 3 3.5 t
1 0.5
0 0 0.5 1 1.5 2 2.5 3 3.5 t
基于Matlab仿真的线性与非线性动态系统建模教学方法探讨
基于Matlab仿真的线性与非线性动态系统建模教学方法探讨作者:王直杰来源:《知识力量·教育理论与教学研究》2013年第15期[摘要]本文采用Matlab仿真产生模拟的可用于线性与非线性动态系统建模的输入输出数据。
根据这些数据,设计程序生成建模所需的数据矩阵。
同时给出了最小二乘法、最大似然估计、BP神经网络、RBF神经网络建模的样例程序。
为学生熟悉、比较及应用各种线性与非线性动态系统建模方法提供了条件。
[关键词]动态系统建模仿真人工神经网络在讲授完线性与非线性动态系统建模方法基本理论以后,需要让学生进行上机实验[1]以达到以下目的:1进一步加深理解学习的基本理论;2各种参数的选择对建模效果的影响;3各种建模方法的优缺点及适用场合。
为了达到这些目的,我们模拟实际应用时的情况,提供给学生模拟的输入输出数据,以便学生利用这些数据,进行编程建立模型。
同时我们编程实现基于最小二乘法、最大似然估计、BP神经网络、RBF神经网络的动态系统建模方法[2,3],学生可以利用这些Matlab程序进行各种方法的学习、各种情况下建模效果的对比,以及各种方法的适用场合的对比。
一、基于Matlab仿真的线性动态系统最小二乘法建模的教学假设系统的差分方程为:y(k)=-a1y(k-1)-a2y(k-2)-…-any(k-n)+b0u(k)+b1u (k-1)+…+bmu(k-m)+e(k)。
其中y(k)为输出,u(k)为输入,e(k)为模型残差。
假定建模用的数据序列从y(k)开始,则构建以下数据矩阵及数据向量:如果模型残差为白噪声(实际情况多为有色噪声,但当噪声强度不大时,可近似当作白噪声处理),则根据最小二乘法,由这组数据估计得到的参数。
以上的最小二乘法需要输入(u(K-m),u(K-1),…,u(K+N-1))和输出(y(K-n),y(K-n+1),…,y(K+N-1))数据,我们可用以下的Matlab程序(程序1)产生模拟的输入输出数据(程序中采用了一个简单的二阶离散系统,学生实验时可换成需要的模型),并形成数据矩阵及数据向量。