前言
最近作者也是要期末考了,正在复习MATLAB,我们的专业课是控制系统建模与仿真,索性决定边写博客边复习,避免自己考完以后就全部忘记了。我们的课本是《控制系统计算机辅助设计--MATLAB语言与应用(第三版)》,但是不同课本其实也差不了多少,如果你想学习控制系统建模仿真,或者你也要进行该科目的考试,欢迎通过看我的博客学习,保证能让你学会或者考试拿高分。
现在我们正式开始,第一章是控制系统计算机辅助设计概述,其实更多是概念性的东西,只有少部分编程知识,这边简单讲讲。
学习目标
本章的主要任务是让你从宏观上认识什么是 CACSD(计算机辅助控制系统设计) ,以及为什么 MATLAB 是该领域事实上的标准工具。它不涉及高深的数学推导,重点在于掌握 MATLAB 的基本操作环境 、在线帮助系统 以及初步的效率意识。
核心原理与知识点
- MAD 方法论 :控制系统设计的三个阶段:
- M (Modeling) 建模:建立数学模型(微分方程、传递函数等)。
- A (Analysis) 分析:分析系统的稳定性、快速性、准确性。
- D (Design) 设计:根据性能指标要求,设计控制器(如 PID、超前校正等)。

- 交互式语言的优势 :MATLAB 与传统 C/Fortran 的区别在于它不需要复杂的编译过程,可以"即敲即得"。
- 工具箱(Toolboxes)概念:MATLAB 不仅仅是一个计算器,它可以通过各种专业工具箱(如 Control System Toolbox)扩展功能。
必会函数清单及实例
虽然第一章以综述为主,但在课后习题中引入了几个非常基础且关键的函数,用于性能测试和基础运算。
(1) help 与 doc
-
功能与用处 :获取函数的帮助信息。
help在命令行窗口快速显示简要说明,doc在浏览器中打开详尽的说明文档(带示例)。 -
可执行例子 :
matlabhelp inv % 在命令行查看求逆矩阵函数的用法 doc inv % 打开 inv 函数的图形化详细文档 -
源码讲解 :这是学习 MATLAB 最重要的命令,遇到任何不认识的函数,第一时间
help它。 -
输出结果 :窗口会打印出
inv的功能描述,并且因为doc命令打开帮助文档的窗口,可以在文档中查看


(2) tic 与 toc
-
功能与用处 :用于测量代码运行的时间。
tic开始计时,toc结束计时并输出耗时(秒)。 -
可执行例子 :
matlabn = 1000; % 定义矩阵阶数 A = rand(n); % 生成一个 n*n 的随机矩阵 tic; % 开始计时 B = inv(A); % 计算矩阵的逆 t = toc; % 结束计时并获取时间 fprintf('计算 %d 阶矩阵求逆耗时: %.4f 秒\n', n, t); -
源码讲解 :首先定义规模,生成矩阵,然后用
tic/toc把计算过程包裹起来。 -
输出结果示例 :
计算 1000 阶矩阵求逆耗时: 0.2987 秒(具体取决于电脑性能)。

(3) rand 与 eye 与 norm
-
功能与用处:
rand(n):生成 n 阶均匀分布的随机矩阵。eye(n):生成 n 阶单位矩阵。norm(E):计算矩阵的范数,常用于衡量误差的大小。
-
可执行例子(验证计算误差):
matlabn = 5; A = rand(n); B = inv(A); error_matrix = A * B - eye(n); % 理论上应为 0 矩阵 err = norm(error_matrix); % 计算误差的范数 disp("A矩阵") disp(A) disp("B矩阵") disp(B) disp("误差矩阵") disp(error_matrix) disp(['计算误差为: ', num2str(err)]); -
源码讲解 :在计算机中,浮点数运算存在舍入误差,
A*inv(A)并不完全等于单位阵,通过norm可以看到这个误差极其微小(通常在 10−1310^{-13}10−13 数量级)。 -
输出结果示例

(4) syms 与 expand
-
功能与用处 :
syms:声明符号变量,使 MATLAB 进行代数运算而非数值运算。expand:对符号表达式进行展开。
-
可执行例子 (模拟习题1.7.7):
matlabsyms x; % 声明符号变量 x P = (x + 1)^5; % 定义一个多项式 result = expand(P); % 展开多项式 disp(result); -
源码讲解 :如果没有
syms,MATLAB 会寻找x的具体数值。有了syms,它就像做代数题一样处理公式。 -
输出结果 :
x^5 + 5*x^4 + 10*x^3 + 10*x^2 + 5*x + 1。

MATLAB 语法知识
- 赋值语句 :
变量名 = 表达式;(加分号表示不显示计算结果,不加则直接打印在屏幕上)。 - 矩阵定义 :使用方括号
[],同行元素用逗号或空格隔开,跨行用分号;。 - 注释 :使用百分号
%开头。
Simulink 基础
Simulink 是基于 图形化框图 的仿真环境。
-
启动方式 :在命令行输入
simulink即可打开库浏览器。

-
核心逻辑:
- 创造空白模型

- 从库浏览器拖拽模块(Block)。
- 用信号线连接模块。
- 设置仿真时间并点击运行。
注:第一章仅要求知道它是做什么的,具体操作在后续章节。
- 创造空白模型
课后练习建议
如果你现在有 MATLAB 环境,请尝试执行上面代码片段中的第 (2) 和 (3)。
思考题 :当你把矩阵阶数 n 从 5 改为 5000 时,计算时间是线性增长的吗?(可以注释掉矩阵输出的代码)
(你会发现时间增长得非常快,这能帮你建立算法复杂度的初步概念,这在大型控制系统仿真中非常关键。)
准备好进入第二章了吗?第二章将开始系统地讲解程序设计。