1. MATLAB 简介
-
MATLAB 是什么?
-
MATLAB 是一种用于数值计算、数据分析和可视化的高级编程语言。
-
特别适合控制系统、信号处理、优化等领域的仿真与分析。
-
-
MATLAB 基本操作
-
变量定义与赋值
-
矩阵运算
-
绘图功能(如
plot
、step
、bode
等) -
脚本与函数编写
-
示例代码:
matlab
% 定义变量
a = 5;
b = [1, 2, 3];
c = a * b;
% 绘图
t = 0:0.1:10;
y = sin(t);
plot(t, y);
title('正弦波');
xlabel('时间 t');
ylabel('幅值 y');
2. 线性系统的定义
-
什么是线性系统?
-
满足叠加性和齐次性的系统。
-
数学描述:微分方程或传递函数形式。
-
-
线性系统的表示
-
传递函数:G(s)=Y(s)U(s)G(s)=U(s)Y(s)
-
状态空间模型:
x˙=Ax+Bux˙=Ax+Buy=Cx+Duy=Cx+Du
-
示例代码:
matlab
% 定义传递函数
num = [1];
den = [1, 2, 10];
G = tf(num, den);
% 定义状态空间模型
A = [0 1; -10 -2];
B = [0; 1];
C = [1 0];
D = 0;
sys = ss(A, B, C, D);
3. 线性系统的稳定性
-
稳定性的定义
-
系统在有限输入下,输出是否有限。
-
-
判断方法
-
极点位置:所有极点实部为负(左半平面)。
-
Routh-Hurwitz 判据。
-
-
MATLAB 实现
-
使用
pole
函数计算极点。
-
示例代码:
matlab
% 计算极点
poles = pole(G);
disp('系统的极点为:');
disp(poles);
% 判断稳定性
if all(real(poles) < 0)
disp('系统稳定');
else
disp('系统不稳定');
end
4. 线性系统的时域分析
-
时域响应
-
阶跃响应(
step
) -
脉冲响应(
impulse
) -
任意输入响应(
lsim
)
-
-
性能指标
-
上升时间、超调量、调节时间。
-
示例代码:
matlab
% 阶跃响应
step(G);
title('阶跃响应');
% 计算性能指标
S = stepinfo(G);
disp('阶跃响应性能指标:');
disp(S);
5. 线性系统的频域分析
-
频域响应
-
伯德图(
bode
) -
奈奎斯特图(
nyquist
)
-
-
频域指标
-
带宽、增益裕度、相位裕度。
-
示例代码:
matlab
% 绘制伯德图
bode(G);
grid on;
title('伯德图');
% 计算频域指标
[Gm, Pm, Wcg, Wcp] = margin(G);
disp('增益裕度 Gm:');
disp(Gm);
disp('相位裕度 Pm:');
disp(Pm);
6. 反馈控制
-
反馈系统结构
-
开环 vs 闭环。
-
反馈对系统性能的影响(稳定性、响应速度等)。
-
-
MATLAB 实现
-
使用
feedback
函数。
-
示例代码:
matlab
% 定义控制器
K = 1;
H = tf(1, [1 1]);
% 闭环系统
sys_cl = feedback(K * G, H);
% 绘制闭环系统的阶跃响应
step(sys_cl);
title('闭环系统阶跃响应');
7. 状态空间分析
-
状态空间模型
-
状态变量、输入、输出。
-
状态方程与输出方程。
-
-
MATLAB 实现
-
使用
ss
函数定义状态空间模型。 -
使用
step
、initial
等函数分析状态空间模型。
-
示例代码:
matlab
% 定义状态空间模型
A = [0 1; -10 -2];
B = [0; 1];
C = [1 0];
D = 0;
sys = ss(A, B, C, D);
% 状态空间模型的阶跃响应
step(sys);
title('状态空间模型阶跃响应');
8. 总结
-
MATLAB 在线性系统分析中的优势
-
快速建模与仿真。
-
丰富的工具箱支持(如 Control System Toolbox)。
-
-
进一步学习
-
非线性系统分析。
-
最优控制与鲁棒控制。
-
附录:MATLAB 常用函数
函数名 | 功能描述 |
---|---|
tf | 定义传递函数 |
ss | 定义状态空间模型 |
step | 计算阶跃响应 |
bode | 绘制伯德图 |
feedback | 构建反馈系统 |
pole | 计算系统极点 |
margin | 计算增益裕度和相位裕度 |
大家对DeepSeek的结果打几分?