README.md

August 19, 2026 · View on GitHub

MATLAB Simulink 43 Tutorials MIT Bilingual v2.1.0 Stars Last Commit CI

Simulink 控制工程教程

从零基础到嵌入式代码部署 — 43 课系统学习路径
覆盖经典控制、现代控制、鲁棒/非线性/MPC、自适应/模糊、物理建模到代码生成


目录


效果预览

所有教程一键运行(run_all_tutorials)自动生成的结果图,更多见 docs/images:

PID 闭环控制 (t05) LQR 最优控制 (t10)
PID LQR
Kalman 滤波 (t12) PMSM 矢量控制 FOC (t14)
Kalman FOC

快速开始

第一步:克隆项目

git clone https://github.com/xingd5478-ctrl/simulink-control-tutorial.git

第二步:检查环境

在 MATLAB 中打开项目目录,运行环境检查脚本:

>> check_setup

第三步:开始第一课

>> t00_main_guide            % 查看全部 43 课总览
>> t01_signal_basics         % 第 1 课:正弦波 + 增益 + 示波器

第四步:按学习路径推进

% 基础阶段 (t01-t08) — 不需要额外工具箱
% 经典控制 (t16, t17, t22) — 需要 Control System Toolbox
% 现代控制 (t09-t12) — 状态空间、LQR、观测器、Kalman
% 高级控制 (t18-t21, t23, t24) — 鲁棒、MPC、滑模、自适应、模糊
% 应用部署 (t13, t14, t25, t15) — 电机、Simscape、代码生成
% 综合案例 (t26-t30) — 机器人、建模、DSP、悬挂
% 非线性滤波 (t31-t35) — EKF、UKF、IMU 融合
% Simulink 进阶 (t36-t43) — Stateflow、Bus、模型引用、变体等

% 也可以一键运行全部(比较耗时,建议学完基础后再试)
>> run_all_tutorials

每个脚本会自动创建 Simulink 模型 (.slx) → 配置模块 → 运行仿真 → 生成结果图,你不需要手动搭任何模型。

运行完一课后做什么

  1. 双击 Scope 模块 — 查看仿真波形
  2. 双击其他模块 — 看看参数是怎么设置的
  3. 修改参数 — 比如把增益从 2 改成 5,重新运行看变化
  4. 观察生成的 MATLAB Figure — 里面的对比图帮你理解概念

前置要求

依赖说明阶段
MATLAB R2020a+核心运行环境全部
Simulink模型搭建与仿真全部
Control System Toolbox状态空间、LQR、Kalman、频域分析Phase 2-5
Robust Control ToolboxH∞ / μ 分析t19 (可选)
Model Predictive Control ToolboxMPC 设计t20 (可选)
Fuzzy Logic Toolbox模糊推理系统t24 (可选)
Simscape物理建模t25 (可选)

新手提示:t01-t08 只需 MATLAB + Simulink,不需要额外工具箱。安装 MATLAB 时勾选 Simulink 即可。运行 check_setup 可以一键检查你的环境是否满足要求。


常见问题 (FAQ)

Q: 我完全没学过控制理论,能学吗?

能。Phase 1 (t01-t08) 只教 Simulink 操作,不涉及控制理论。学完 Phase 1 你就能熟练搭建 Simulink 模型了。后续教程会在需要的地方解释控制概念。

Q: 运行脚本时报 "Undefined function or variable"?

确保 MATLAB 的当前文件夹是项目根目录(simulink-control-tutorial/)。在 MATLAB 的"当前文件夹"面板中导航到该目录即可。

Q: 仿真没有波形输出?

双击模型窗口里的 Scope 模块,如果波形是一条直线,检查 Step 模块的 Step time 参数(通常在 0.5s 处跳变,不是 0s)。

Q: 模型窗口太多,怎么关闭?

在 MATLAB 命令窗口输入:

>> bdclose all     % 关闭所有 Simulink 模型
>> close all       % 关闭所有 Figure
Q: 我想重新生成某个教程的模型,怎么做?

直接重新运行该教程脚本即可,它会自动覆盖旧的 .slx 文件:

>> t05_pid_control

教程总览

43 个教程,分八个阶段,按学习路径从基础到工业级应用循序递进。

#教程内容模型
t01信号基础信号、增益、示波器
t02数学运算加法、乘法、Mux/Demux 信号路由
t03一阶系统传递函数、时间常数
t04二阶系统阻尼比、超调量、固有频率
t05PID 控制P/I/D 各环节作用、反馈闭环
t06信号源与输出数据导入导出、多种信号源
t07子系统模型层次化封装
t08Mask 封装参数化模块设计

Phase 2 — 经典控制设计 (t16, t17, t22)

#教程核心理论工程价值
t16频域分析Bode图、Nyquist图、增益/相位裕度频域稳定性判据
t17超前-滞后校正Lead/Lag 补偿器、频率整形经典控制设计方法
t22根轨迹法rlocus()、极点走向、补偿器设计经典控制设计可视化

Phase 3 — 现代控制理论 (t09-t12)

#教程核心理论工程价值
t09状态空间模型ẋ=Ax+Bu, y=Cx+Du现代控制理论基础
t10LQR 最优控制极点配置、Riccati 方程、Q/R 调参多变量系统设计
t11状态观测器Luenberger Observer、对偶性、(A-LC)无传感器控制
t12Kalman 滤波lqe()、Q/R 噪声建模、Luenberger 对比噪声环境最优估计

Phase 4 — 高级控制专题 (t18-t21, t23, t24)

#教程核心理论工程价值
t18系统辨识阶跃响应法、最小二乘、模型验证从实验数据到数学模型
t19H∞ 鲁棒控制混合灵敏度、hinfsyn、μ 分析不确定性下的最优控制
t20模型预测控制 MPC滚动优化、QP 约束求解、显式 MPC带约束的多变量控制
t21滑模控制 SMC滑模面、抖振抑制、Super-Twisting非线性鲁棒控制
t23MRAC 自适应控制MIT 规则、参考模型、参数自适应参数时变系统的在线调节
t24模糊逻辑控制Sugeno FIS、隶属度函数、控制曲面免模型专家经验控制

Phase 5 — 机电系统与部署 (t13, t14, t25, t15)

#教程核心理论工程价值
t13DC 电机控制电磁+机械耦合、级联 PI、LQR 对比执行器建模
t14PMSM + FOCd-q 变换、Clarke/Park、矢量控制无刷电机控制
t25Simscape 物理建模物理元件连线、多域耦合、自动推导免公式推导的建模方法
t15代码生成c2d 离散化、dlqr、C 代码、FreeRTOS嵌入式部署

Phase 6 — 综合应用案例 (t26-t30)

#教程核心理论工程价值
t26机器人运动学DH 参数、正逆运动学、PUMA560机器人控制基础
t27MSD 系统建模TF/SS/离散化/数值积分四法对比多角度系统理解
t28DSP 基础采样定理、FFT、窗函数、低通滤波信号处理实战
t29MSD 控制系统PID vs LQR + 传感器噪声控制方案对比
t30主动悬挂控制1/4 车模型 + PID 闭环完整工程案例

Phase 7 — 非线性滤波(NEW) (t31-t35)

#教程核心理论工程价值
t31EKF 基础Van der Pol 振子、Jacobian 局部线性化非线性系统状态估计入门
t32EKF 倒立摆强非线性 sin(θ)、初值收敛经典非线性案例实战
t33UKFSigma 点、无迹变换、免 Jacobian高精度非线性滤波
t34EKF vs UKFMonte Carlo 统计对比选型依据
t35IMU 融合陀螺仪+加速度计、互补滤波 vs EKF飞控/手机/VR 姿态估计
#教程核心理论工程价值
t36Stateflow 状态机状态/转移/条件动作逻辑控制建模
t37触发/使能子系统Enabled/Triggered 条件执行嵌入式采样/使能控制
t38Bus 信号Bus Creator/Selector 打包拆解大规模信号组织
t39模型引用Model block 子模型复用大模型分解
t40变体子系统Variant Subsystem 方案切换A/B 测试、多配置
t41模型回调PreLoad/Init/StopFcn自动化初始化/保存
t42S-FunctionLevel-2 MATLAB S-Function自定义模块
t43Model Advisor静态分析、代数环检查建模质量把关

学习路径

Phase 1      Phase 2       Phase 3       Phase 4         Phase 5       Phase 6       Phase 7        Phase 8
(基础)       (经典)        (现代)        (高级)          (机电)        (综合)        (非线性 NEW!)  (进阶 NEW!)

t01-t08  →  t16 频域  →  t09 状态空间 → t18 辨识  →  t13 DC电机 → t26 运动学 → t31 EKF      → t36 Stateflow
              ├t17 校正     ├t10 LQR     ├t19 H∞    ├t14 FOC    ├t27 建模   ├t32 EKF实战   ├t37 触发使能
              └t22 根轨迹   ├t11 观测器   ├t20 MPC    ├t25 Simscape├t28 DSP    ├t33 UKF       ├t38 Bus信号
                            └t12 Kalman  ├t21 滑模   └t15 代码   ├t29 控制   ├t34 EKFvsUKF   ├t39 模型引用
                                         ├t23 MRAC               └t30 悬挂   └t35 IMU融合   ├t40 变体
                                         └t24 模糊                                           ├t41 回调
                                                                                            ├t42 S-Function
                                                                                            └t43 Model Advisor

教程详解

t01-t08 Simulink 基础 — 点击展开
  • t01 信号基础: 认识 Simulink 模块库,搭建第一个信号流模型,理解 Gain/Scope 的作用
  • t02 数学运算: Sum/Product/Mux/Demux 模块,掌握信号的路由与运算
  • t03 一阶系统: 传递函数建模,理解时间常数 τ 对响应速度的影响
  • t04 二阶系统: 阻尼比 ζ 与超调量的关系,从时域波形反推系统参数
  • t05 PID 控制: P/I/D 三环节独立验证 + 联合闭环调参,直观理解"为什么需要 D"
  • t06 信号源与输出: 从 Workspace 导数据到 Simulink,仿真结果回存 Workspace
  • t07 子系统: 将复杂模型折叠成黑盒,理解层次化建模思想
  • t08 Mask 封装: 自定义参数对话框,让子系统可复用、可配置
t16, t17, t22 经典控制设计 — 点击展开
  • t16 频域分析: Bode/Nyquist/Nichols 图,增益裕度与相位裕度,频域稳定性判据
  • t17 校正器: Lead/Lag 补偿器设计,频率整形,改善瞬态与稳态性能
  • t22 根轨迹法: 开环增益 K 从 0→∞ 时闭环极点在复平面的运动轨迹,rlocus() 自动绘制,sgrid 叠加设计约束
t09-t12 现代控制理论 — 点击展开
  • t09 状态空间: 从传递函数到状态空间,理解"状态"的物理意义,能控/能观性
  • t10 LQR: 极点配置 → LQR 最优控制,Riccati 方程,Q/R 权重矩阵调参策略
  • t11 观测器: Luenberger 观测器设计,对偶原理,分离原理验证
  • t12 Kalman: 过程噪声与测量噪声建模,lqe() 设计,与 Luenberger 对比
t18-t21, t23, t24 高级控制专题 — 点击展开
  • t18 系统辨识: 阶跃响应法、最小二乘法,从实验数据拟合传递函数,模型验证
  • t19 H∞ 鲁棒: 不确定性建模 (ureal/uss),混合灵敏度 S/KS/T 整形,μ 分析
  • t20 MPC: 预测模型、滚动优化、QP 约束求解,约束下的多变量控制
  • t21 滑模控制: 滑模面设计、等效控制、抖振抑制(饱和函数/超螺旋算法)
  • t23 MRAC 自适应: 参考模型指定理想行为,MIT 规则在线调节控制器参数,参数突变时自动恢复
  • t24 模糊控制: Sugeno 型模糊推理系统,5×5 规则表,高斯隶属度函数,无模型专家经验控制
t13-t15, t25 机电系统与部署 — 点击展开
  • t13 DC 电机: 电磁+机械耦合建模,级联 PI 控制,LQR 对比
  • t14 PMSM/FOC: Clarke/Park 变换,d-q 解耦,矢量控制
  • t25 Simscape: 物理建模—不用推公式,直接放元件
  • t15 代码生成: c2d 离散化 → dlqr → C 代码 → FreeRTOS
t26-t30 综合应用案例 — 点击展开
  • t26 机器人运动学: DH 参数、正逆运动学、PUMA560 工作空间
  • t27 MSD 建模: TF/SS/离散化/数值积分四法对比
  • t28 DSP 基础: 采样定理、FFT、窗函数、低通滤波
  • t29 MSD 控制: PID vs LQR 一键切换 + 传感器噪声
  • t30 主动悬挂: 1/4 车模型、路面→车轮→弹簧→车身→PID 闭环
t31-t35 非线性滤波(NEW v2.1.0) — 点击展开
  • t31 EKF 基础: Van der Pol 振子,EKF 五步循环,Jacobian 局部线性化
  • t32 EKF 倒立摆: 强非线性 sin(θ),从很差的初值收敛
  • t33 UKF: Sigma 点采样,无迹变换,不需要 Jacobian
  • t34 EKF vs UKF: Monte Carlo 统计对比,μ 扫参
  • t35 IMU 融合: 陀螺仪+加速度计姿态估计,互补滤波 vs EKF
t36-t43 Simulink 进阶工程(NEW v2.1.0) — 点击展开
  • t36 Stateflow: 状态机、状态/转移/条件动作,电机启停控制
  • t37 触发/使能子系统: Enabled/Triggered 条件执行,采样保持
  • t38 Bus 信号: Bus Creator/Selector 打包拆解,按名提取
  • t39 模型引用: Model block 引用子模型,独立开发测试
  • t40 变体子系统: 一套模型多套方案,变量切换
  • t41 模型回调: PreLoad/Init/StopFcn 自动初始化保存
  • t42 S-Function: Level-2 MATLAB S-Function 自定义死区模块
  • t43 Model Advisor: 静态分析、代数环检查、未连接端口

学完后能做什么

完成全部 43 课,你将具备以下能力:

  • 从物理定律推导状态空间模型
  • 设计 LQR/Kalman 最优控制器和观测器
  • 在 Bode/Nyquist 图上分析稳定性并设计补偿器
  • 从实验数据辨识系统模型
  • 处理参数不确定性,设计 H∞ 鲁棒控制器
  • 为带约束系统设计 MPC 控制器
  • 实现滑模控制应对非线性/大扰动
  • 用根轨迹法分析极点走向并设计补偿器
  • 设计 MRAC 自适应控制器应对参数时变系统
  • 搭建模糊逻辑控制系统,不依赖精确数学模型
  • 使用 Simscape 进行物理建模,免公式推导
  • 连续→离散→C 代码,部署到 STM32 等嵌入式平台
  • 理解级联 PI、FOC 矢量控制的工业实践

项目结构

.
├── check_setup.m                 # 新手环境检查(运行开始前先跑这个)
├── t00_main_guide.m              # 教程索引(运行查看全貌)
├── t01-t43_*.m                   # 43 个教程主脚本
├── models/                       # Simulink 模型文件(脚本自动生成)
│   └── tutorial01-tutorial43.slx
├── utils/                        # 共享工具函数
│   └── getSimData.m
├── run_all_tutorials.m           # 一键运行全部教程
├── docs/images/                  # 自动生成的仿真结果图
├── .github/                      # Issue/PR 模板
├── README.md                     # 本文件(中文)
├── README_EN.md                  # English version
├── CHANGELOG.md                  # 更新日志
├── CONTRIBUTING.md               # 贡献指南
├── CODE_OF_CONDUCT.md            # 社区行为准则
├── SECURITY.md                   # 安全政策
└── LICENSE                       # MIT 协议

配套项目


贡献指南

欢迎 Issue 和 PR!提 bug、建议新专题、改进文档都算贡献。

  • 发现 bug → 使用 Bug Report 模板
  • 新专题建议 → 使用 Tutorial Request 模板
  • 改进代码/文档 → Fork → 修改 → PR

详见 CONTRIBUTING.md

Star History

Star History Chart

License

MIT — 可自由使用、修改、分发,详见 LICENSE

如果这套教程对你有帮助,欢迎点个 ⭐ Star,也欢迎提 Issue 反馈问题或建议新专题。


邢栋 · 2026