我是靠谱客的博主 不安吐司,最近开发中收集的这篇文章主要介绍MATLAB与自动控制原理MATLAB在自动控制原理中的应用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

MATLAB在自动控制原理中的应用

传递函数

1、利用matlab构建传递函数

%% 方法一
G_s = tf([1 1],[1 5 6])

%% 方法二
s = tf('s')
G_s1 = (s+1)/(s^2+5*s+6)


sys_engine = tf([1],[0.02 0.2]);
sys_acturator = tf([0.1],[0.5 2]);
system = sys_engine*sys_acturator;
%%方法二
system = series(sys_engine,sys_acturator);
s = tf('s');
sys_ctrl = 1/s; %积分控制器
%系统的开环传递函数
system_ol = sys_ctrl*system;


第二步:搭建闭环传递函数

%系统的闭环传递函数
%方法一:
system_clo = system_ol/(1+system_ol);
%化简:
minreal(system_clo);
%方法二
system_cl_k1 = feedback(system_ol,1); %反馈函数可以换成H(S)


阶跃响应:函数step(闭环系统)

step(system_cl_k1);


伯德图:bode(闭环系统):

bode(system_cl_k1);
grid on


乃氏图:nyquist(闭环系统):
根轨迹图:rlocus(开环系统)

rlocus(system_ol);
%打开栅格
sgrid
%或者
grid on
%打开根轨迹编辑器
rltool(system_ol);


sys_ctrl = 5/s;
system_ol_5 = sys_ctrl*system;
system_cl_k5 = feedback(system_ol,1);

当有两种不同的输出响应时

状态空间方程


1、MATLAB中的状态空间方程及能控性能观性判断

%% 判断系统的能控性质
clc
clear
%线性定常连续系统:dx=Ax+Bu
%状态完全能控的充分必要条件:rank(Uc)=n
% Uc = [B AB .....A(n-1)B]
%例
%输入系统矩阵
A = [1 2 1;0 1 0;1 0 3];
B = [1 0;0 1;0 0];
%求解矩阵Uc
Uc = [B A*B A^2*B];
%求解矩阵Uc的秩
rank(Uc)

%% 判断系统的状态能控性和输出能控性
% rank(Uc)=n
% 判断系统的状态能控性
A = [-4 1;2 -3];
B = [1;2];
Uc = [B A*B];
% 函数ctrb,计算可控性矩阵
uc = ctrb(A,B);
rank(Uc)

% 判断系统的输出能控性
% rank(Uco)=q q为输出个数
C = [1 0];
Uco = [C*B C*A*B];
rank(Uco)

%% 判断系统的能观性
%rank(U0)=n
% 输入系统矩阵
A = [0 1 0 0;3 0 0 2;0 0 0 1;0 -2 0 0];
B = [0;1;0;0];
C = [1 0 0 0];
D = 0;
% 求矩阵U0
U0 = [C;C*A;C*A^2;C*A^3];
% 求矩阵U0的秩
rank(U0)

以能控性为例:

2、MATLAB构建状态空间方程及输出

A = [0 1;-2 -3];
B = [0;1];
C = [1 0];
D = 0;
sys = ss(A,B,C,D);
%阶跃响应
step(sys);
%伯德图
bode(sys);
%乃氏图
nyquist(sys);

状态空间方程与传递函数之间的转换

以上面的数据为例

system = tf(sys)


ss(system)

MATLAB构建离散系统

配置一个离散系统,采样时间为0.1

sys_ls = tf([0 1],[2 3],'Ts',0.1)

MATLAB离散系统与连续系统的转换

相关概念见离散化资料
零阶保持器转换

c2d(system,0.01,'zoh')


一阶保持器转换

 c2d(system,0.01,'foh')


双线性变换

 c2d(system,0.01,'tustin')


d2c(ans)


利用MATLAB对控制系统进行仿真

1、以某个系统为例

system = tf([1],[1 3 2])
% lsim输入有三部分:系统,输入向量,输入时间
lsim(system,[1;1;2;2;3;3],[0:0.1:0.5])


function dx = mysystem(t,x) %输入第一个向量必须是时间,第二个为状态向量,假设x为二维向量
dx = [0;0];
dx(1) = x(2);
dx(2) = -x(1);

end

命令行窗口调用求解

ode45(@mysystem,[0 10],[1;2]) %括号内变量为函数句柄(调用函数,仿真时间,初始状态),出图
[t,y] = ode45(@mysystem,[0 10],[1;2]) %不绘制图形,直接输出数据(时间和状态变量)


最后

以上就是不安吐司为你收集整理的MATLAB与自动控制原理MATLAB在自动控制原理中的应用的全部内容,希望文章能够帮你解决MATLAB与自动控制原理MATLAB在自动控制原理中的应用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(66)

评论列表共有 0 条评论

立即
投稿
返回
顶部