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

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

传递函数

1、利用matlab构建传递函数

复制代码
1
2
3
4
5
6
7
%% 方法一 G_s = tf([1 1],[1 5 6]) %% 方法二 s = tf('s') G_s1 = (s+1)/(s^2+5*s+6)


复制代码
1
2
3
4
5
6
7
8
9
10
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;


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

复制代码
1
2
3
4
5
6
7
8
%系统的闭环传递函数 %方法一: system_clo = system_ol/(1+system_ol); %化简: minreal(system_clo); %方法二 system_cl_k1 = feedback(system_ol,1); %反馈函数可以换成H(S)


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

复制代码
1
2
step(system_cl_k1);


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

复制代码
1
2
3
bode(system_cl_k1); grid on


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

复制代码
1
2
3
4
5
6
7
8
rlocus(system_ol); %打开栅格 sgrid %或者 grid on %打开根轨迹编辑器 rltool(system_ol);


复制代码
1
2
3
4
sys_ctrl = 5/s; system_ol_5 = sys_ctrl*system; system_cl_k5 = feedback(system_ol,1);

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

状态空间方程


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

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
%% 判断系统的能控性质 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构建状态空间方程及输出

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
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);

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

以上面的数据为例

复制代码
1
2
system = tf(sys)


复制代码
1
2
ss(system)

MATLAB构建离散系统

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

复制代码
1
2
sys_ls = tf([0 1],[2 3],'Ts',0.1)

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

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

复制代码
1
2
c2d(system,0.01,'zoh')


一阶保持器转换

复制代码
1
2
c2d(system,0.01,'foh')


双线性变换

复制代码
1
2
c2d(system,0.01,'tustin')


复制代码
1
2
d2c(ans)


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

1、以某个系统为例

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


复制代码
1
2
3
4
5
6
7
function dx = mysystem(t,x) %输入第一个向量必须是时间,第二个为状态向量,假设x为二维向量 dx = [0;0]; dx(1) = x(2); dx(2) = -x(1); end

命令行窗口调用求解

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


最后

以上就是不安吐司最近收集整理的关于MATLAB与自动控制原理MATLAB在自动控制原理中的应用的全部内容,更多相关MATLAB与自动控制原理MATLAB在自动控制原理中内容请搜索靠谱客的其他文章。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部