MATLAB基础语法 #

一、注释 #

1.1 单行注释 #

使用 % 符号:

matlab
% 这是一个单行注释
x = 10;    % 行尾注释

1.2 多行注释 #

使用 %{%}

matlab
%{
这是多行注释
可以跨越多行
用于详细说明
%}

1.3 节注释 #

使用 %% 创建代码节:

matlab
%% 第一节:初始化
x = 0:0.1:10;

%% 第二节:计算
y = sin(x);

%% 第三节:绘图
plot(x, y);

1.4 文档注释 #

函数的文档注释:

matlab
function result = add(a, b)
% ADD 两数相加
%   result = add(a, b) 返回a和b的和
%
% 输入参数:
%   a - 第一个数
%   b - 第二个数
%
% 输出参数:
%   result - 两数之和
%
% 示例:
%   add(1, 2)  % 返回 3
%
% 另见: subtract, multiply

result = a + b;
end

二、标识符 #

2.1 命名规则 #

matlab
% 有效标识符
myVar = 1;
my_var = 2;
MyVar = 3;
var123 = 4;
_var = 5;      % 可以,但不推荐

% 无效标识符
% 123var = 1;  % 错误:不能以数字开头
% my-var = 2;  % 错误:不能包含连字符
% my var = 3;  % 错误:不能包含空格
% class = 4;   % 错误:不能使用关键字

2.2 命名规范 #

类型 规范 示例
变量 小写,下划线分隔 student_name
常量 大写,下划线分隔 MAX_SIZE
函数 小写,驼峰或下划线 calculateSum
大驼峰 MyClass
脚本 小写,下划线 my_script.m

2.3 作用域 #

matlab
% 工作区变量(全局可见)
global_var = 10;

function test()
    % 局部变量(仅函数内可见)
    local_var = 20;
    
    % 全局变量声明
    global global_var;
    disp(global_var);
end

三、关键字 #

3.1 保留关键字 #

matlab
% 控制流关键字
break, case, catch, continue, else, elseif, end, for, 
function, global, if, otherwise, persistent, return, 
switch, try, while

% 查看所有关键字
iskeyword

3.2 特殊变量 #

matlab
ans      % 最近一次计算结果
eps      % 浮点数精度
i, j     % 虚数单位
Inf      % 无穷大
NaN      % 非数字
pi       % 圆周率
realmax  % 最大浮点数
realmin  % 最小正浮点数

示例:

matlab
>> 1/0
ans =
   Inf

>> 0/0
ans =
   NaN

>> pi
ans =
    3.1416

>> sqrt(-1)
ans =
   0.0000 + 1.0000i

四、运算符 #

4.1 算术运算符 #

运算符 描述 示例
+ 加法 3 + 2 = 5
- 减法 3 - 2 = 1
* 矩阵乘法 A * B
.* 元素乘法 A .* B
/ 矩阵右除 A / B
./ 元素右除 A ./ B
\ 矩阵左除 A \ B
.\ 元素左除 A .\ B
^ 矩阵幂 A ^ 2
.^ 元素幂 A .^ 2
' 共轭转置 A'
.' 非共轭转置 A.'
matlab
% 矩阵运算
A = [1 2; 3 4];
B = [5 6; 7 8];

C = A * B        % 矩阵乘法
% 结果: [19 22; 43 50]

D = A .* B       % 元素乘法
% 结果: [5 12; 21 32]

% 幂运算
A^2              % 矩阵平方
A.^2             % 元素平方

4.2 关系运算符 #

运算符 描述 示例
== 等于 5 == 5 = true
~= 不等于 5 ~= 3 = true
> 大于 5 > 3 = true
< 小于 3 < 5 = true
>= 大于等于 5 >= 5 = true
<= 小于等于 3 <= 5 = true
matlab
% 数组比较
A = [1 2 3; 4 5 6];
B = [1 3 2; 4 6 5];

result = A == B
% 结果: [1 0 0; 1 0 0]  (1=true, 0=false)

result = A > 3
% 结果: [0 0 0; 1 1 1]

4.3 逻辑运算符 #

运算符 描述 示例
& 逻辑与(元素) [1 0] & [1 1] = [1 0]
| 逻辑或(元素) [1 0] | [0 1] = [1 1]
~ 逻辑非 ~[1 0] = [0 1]
&& 短路与 true && false = false
|| 短路或 true || false = true
matlab
% 元素逻辑运算
A = [true false true];
B = [true true false];

A & B    % [true false false]
A | B    % [true true true]
~A       % [false true false]

% 短路逻辑运算
% && 和 || 用于标量,具有短路特性
x = 5;
if x > 0 && x < 10
    disp('x在0到10之间');
end

4.4 运算符优先级 #

从高到低:

优先级 运算符
1 ()
2 .' ^ .' .^
3 + - ~(一元)
4 * ./ \ .\ .* ./
5 + -(二元)
6 :
7 < <= > >= == ~=
8 &
9 |
10 &&
11 ||
matlab
% 使用括号明确优先级
result = 2 + 3 * 4;        % 14
result = (2 + 3) * 4;      % 20

% 复杂表达式
x = 1;
y = 2;
z = 3;
result = x < y && y < z;   % true

五、表达式 #

5.1 数值表达式 #

matlab
% 整数
a = 42;

% 浮点数
b = 3.14159;

% 科学计数法
c = 1.5e-10;    % 1.5 × 10^-10
d = 2.5E8;      % 2.5 × 10^8

% 复数
z = 3 + 4i;
z = complex(3, 4);

5.2 字符串表达式 #

matlab
% 字符串(双引号)
str1 = "Hello World";

% 字符数组(单引号)
str2 = 'Hello World';

% 字符串拼接
str3 = "Hello" + " " + "MATLAB";

% 格式化字符串
name = "张三";
age = 25;
str4 = sprintf("%s今年%d岁", name, age);

5.3 数组表达式 #

matlab
% 行向量
row = [1 2 3 4 5];
row = 1:5;           % 使用冒号
row = 1:2:10;        % 步长为2

% 列向量
col = [1; 2; 3; 4; 5];
col = (1:5)';        % 转置

% 矩阵
mat = [1 2 3; 4 5 6; 7 8 9];

% 特殊矩阵
zeros(3, 3);         % 3×3零矩阵
ones(2, 4);          % 2×4全1矩阵
eye(3);              % 3×3单位矩阵
rand(2, 3);          % 2×3随机矩阵

5.4 冒号表达式 #

matlab
% start:step:end
x = 0:0.1:1;         % [0, 0.1, 0.2, ..., 1]
x = 10:-1:0;         % [10, 9, 8, ..., 0]
x = 1:5;             % [1, 2, 3, 4, 5](默认步长1)

% 使用linspace
x = linspace(0, 1, 11);  % 0到1之间11个等分点

% 使用logspace
x = logspace(0, 3, 4);   % 10^0到10^3之间4个对数等分点

六、语句 #

6.1 简单语句 #

matlab
% 赋值语句
x = 10;
y = x + 5;

% 表达式语句
sin(pi/2);           % 结果存储在ans中

% 抑制输出
x = 10;              % 显示输出
x = 10;              % 不显示输出(加分号)

6.2 复合语句 #

matlab
% 多语句同行
x = 1; y = 2; z = 3;

% 长语句续行
total = 1 + 2 + 3 + 4 + 5 + ...
        6 + 7 + 8 + 9 + 10;

% 使用括号续行
result = (1 + 2 + 3 + 4 + 5 + ...
          6 + 7 + 8 + 9 + 10);

6.3 控制语句 #

matlab
% 条件语句
if x > 0
    disp('正数');
elseif x < 0
    disp('负数');
else
    disp('零');
end

% 循环语句
for i = 1:5
    disp(i);
end

% switch语句
switch day
    case 'Monday'
        disp('星期一');
    case 'Tuesday'
        disp('星期二');
    otherwise
        disp('其他');
end

七、代码规范 #

7.1 缩进 #

matlab
% 使用4个空格缩进(推荐)
function result = calculate(x)
    if x > 0
        result = sqrt(x);
    else
        result = NaN;
    end
end

7.2 空行 #

matlab
% 函数之间空两行
function a = func1()
    a = 1;
end


function b = func2()
    b = 2;
end

% 逻辑块之间空一行
x = 1:10;

y = x.^2;

plot(x, y);

7.3 行长度 #

matlab
% 每行不超过80字符
% 长语句使用续行符
long_variable_name = function_with_long_name(...
    argument1, argument2, argument3);

7.4 注释规范 #

matlab
% 文件头注释
%=====================================================================
% 文件名: my_script.m
% 功能: 计算并绘制正弦函数
% 作者: 张三
% 日期: 2026-03-27
% 版本: 1.0
%=====================================================================

% 函数注释
function y = myFunction(x)
% MYFUNCTION 计算x的平方
%   y = myFunction(x) 返回x的平方值
%
%   输入:
%       x - 输入数值或数组
%
%   输出:
%       y - x的平方
%
%   示例:
%       myFunction(3)  % 返回 9

y = x.^2;
end

八、常见错误 #

8.1 语法错误 #

matlab
% 错误:括号不匹配
x = (1 + 2 * 3    % Error: 缺少右括号

% 正确
x = (1 + 2) * 3;

8.2 运算符错误 #

matlab
% 错误:矩阵维度不匹配
A = [1 2];
B = [1; 2];
C = A * B;        % 正确:内积
C = A .* B;       % 错误:维度不匹配

% 正确
A = [1 2];
B = [3 4];
C = A .* B;       % 元素乘法

8.3 关键字冲突 #

matlab
% 错误:使用关键字作为变量名
% end = 10;       % 错误:end是关键字

% 正确
end_value = 10;

九、总结 #

本章学习了MATLAB的基础语法:

  1. 注释:单行、多行、节注释
  2. 标识符:命名规则和规范
  3. 关键字:保留字和特殊变量
  4. 运算符:算术、关系、逻辑运算符
  5. 表达式:数值、字符串、数组表达式
  6. 代码规范:缩进、空行、注释规范

掌握这些基础知识,是编写高质量MATLAB代码的第一步。下一章,我们将学习MATLAB的数据类型。

最后更新:2026-03-27