Skip to content

MATLAB - 语法

MATLAB 环境是一个强大的交互式平台。你可以在 >> 提示符处直接在命令行窗口中输入命令,MATLAB 作为一种解释型语言,会立即执行它们。这使得它非常适合快速原型开发、数据分析和学习。

最简单地,你可以直接进行计算:

5 + 5
ans =
10
3^2 + sin(pi/2) % 3 的平方加上 90 度角的正弦
ans =
10

请注意,如果你不将结果赋给变量,MATLAB 会将其存储在一个名为 ans 的临时变量中。这对于快速检查来说没有问题,但在脚本中,你应该始终将结果赋给描述性变量。

你使用赋值运算符 = 创建变量。如果你以分号 ; 结束一行,MATLAB 会执行该命令,但抑制输出在命令行窗口中显示。这对于保持脚本整洁和可读性至关重要。

% 为 'principal' 赋值,输出被抑制。
principal = 1000;
% 为 'rate' 赋值,输出被抑制。
rate = 0.05;
% 计算利息,输出被显示因为没有分号。
yearly_interest = principal * rate

上述代码的输出将是:

yearly_interest =
50

良好的注释对于可理解和可维护的代码至关重要。使用百分号(%)进行单行注释。对于多行注释,你可以使用块注释运算符 %{ 和 %}。

% 这是一个单行注释。
x = 9; % 这是一个行内注释,解释了该行的目的。
%{
这是一个块注释。
它可以跨越多行,并且在
暂时禁用大段代码时非常有用。
%}

关键运算符:矩阵运算 vs. 逐元素运算

Section titled “关键运算符:矩阵运算 vs. 逐元素运算”

这是 MATLAB 中最重要的概念之一。理解矩阵运算符和逐元素(或数组)运算符之间的区别至关重要。

矩阵运算符逐元素运算符目的
*.*乘法。A*B 是矩阵乘法。A.*B 将 A 的每个元素与 B 的对应元素相乘。
/./右除。A/B 大致等于 A*inv(B)。A./B 将 A 的每个元素除以 B 的对应元素。
\.\左除。A\B 求解 A*x=B。A.\B 将 B 的每个元素除以 A 的对应元素。
^.^幂。A^2 是矩阵幂(A*A)。A.^2 对 A 的每个元素分别求平方。
'.转置。A' 是复共轭转置。A.' 是非共轭转置(如果你不处理复数,请使用此项)。

MATLAB 预定义了几个有用的常量和变量:

名称含义
ans存储最近未赋值的结果。在脚本中应避免使用。
pi数字 π (3.1415…)。
i, j虚数单位,√-1。可以被覆盖,因此对于复数,使用 1i 更安全。
Inf无穷大,例如 1/0 的结果。
NaN表示“不是数字”(Not a Number),例如 0/0 的结果。
eps浮点相对精度;从 1.0 到下一个最大双精度数的距离。

变量名必须以字母开头,后面可以是字母、数字或下划线。MATLAB 区分大小写(myVar 与 myvar 不同)。

最佳实践:使用描述性名称来指示变量的用途。常见的命名约定包括驼峰命名法(camelCase,例如 interestRate)或下划线命名法(snake_case,例如 interest_rate)。避免使用内置函数的名称(如 sum 或 mean)。

学会自行查找帮助是一种超能力。MATLAB 拥有优秀的内置文档。

% 在命令行窗口中获取函数的快速摘要
help plot
% 在单独的窗口中打开函数的完整文档页面
doc rand

你可以将工作区中的变量保存到 MATLAB 特定的 .mat 文件中,并在以后的会话中重新加载它们。

% 创建一些变量
myVariable = rand(5);
myName = "Alice";
% 将所有工作区变量保存到名为 myData.mat 的文件中
save myData.mat
% 清除工作区以演示加载
clear
% 将变量重新加载到工作区
load myData.mat

现代实践:为了与其他程序共享数据,请考虑使用 CSV 或 Excel 等标准化格式。使用 writematrix、writetable 或 writecell 来导出数据,并使用 readmatrix、readtable 等来导入数据。