🚀 MATLAB 基本语法完全指南
MATLAB 是科学计算和工程应用的重要工具,掌握基本语法是使用 MATLAB 的基础。本文将系统介绍 MATLAB 的基本语法,包括环境操作、基础语法、变量与命令、运算符、输入输出以及控制结构,帮助你快速入门 MATLAB 编程基础。
🖥️ MATLAB 环境介绍
MATLAB 环境就像一个超级复杂的计算器。您可以在 >> 命令提示符下输入命令。MATLAB 是一个解释型环境,您给出一个命令,MATLAB 立即执行该命令。
点击 Enter 键执行命令后,MATLAB 会显示结果。
💻 运行结果
✍️ 基础语法
1️⃣ 动手练习
1
2
3
4
5
| 5+5 % 加法运算
3^2 % 幂运算
sin(pi/2) % 三角函数计算
7/0 % 除以零(结果为 Inf)
732*20.3 % 乘法运算
|
💻 运行结果
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| >> 5+5
ans = 10
>> 3^2
ans = 9
>> sin(pi/2)
ans = 1
>> 7/0
ans = Inf
>> 732*20.3
ans = 14859.6
|
2️⃣ 使用分号(;)
分号(;)表示语句结束。如果要隐藏表达式的 MATLAB 输出,请在表达式后添加分号。
1
2
| x = 3; % 赋值但不显示结果
y = x + 5; % 计算但不显示结果
|
💻 运行结果
1
2
| >> x = 3;
>> y = x + 5;
|
3️⃣ 添加注释
百分比符号(%)用于指示注释行。
1
2
| x = 9 % 将值 9 赋给 x
% 这是注释行,不会被执行
|
💻 运行结果
4️⃣ 使用省略号(…)表示行连续运算符
省略号(…)用于指示连续行连续运算符的开始。
1
2
| a = 3 ... % 使用省略号继续到下一行
+ 5 % 3+5的加法运算,结果赋值给 a
|
💻 运行结果
5️⃣ 使用冒号(:)生成序列
冒号(:)用于生成等间隔的数值序列。
1
2
| 1:1:10 % 生成 1 到 10 的序列,步长为 1
1:2:10 % 生成 1 到 10 的序列,步长为 2
|
💻 运行结果
1
2
3
4
5
| >> 1:1:10
ans = 1 2 3 4 5 6 7 8 9 10
>> 1:2:10
ans = 1 3 5 7 9
|
📦 变量与命令
特殊变量和常量
| 名称 | 意义 |
|---|
ans | 最近计算的答案 |
eps | 浮点精度 |
i, j | 虚数单位 √-1 |
Inf | 无穷 |
NaN | 未定义的数值结果(not a number) |
pi | π |
inf | 无穷(正无穷) |
-inf | 无穷(负无穷) |
MATLAB 常用命令
| 命令 | 功能 |
|---|
clear | 从内存中删除变量 |
clc | 清空命令窗口 |
close | 关闭所有图形窗口 |
help | 显示命令的详细说明 |
who | 显示当前工作区中的变量和函数 |
format | 设置显示格式 |
type | 打出文件内容 |
lookfor | 在帮助条目中搜索关键字 |
quit | 停止 MATLAB |
1
2
| % 清空工作区、命令窗口和关闭图形窗口,在每次运行前先执行
>> clear; clc; close;
|
help 命令
1
2
3
| >> clear
% 可以使用help命令查看函数的详细说明
>> help sin
|
💻 运行结果
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| >> clear
>> help sin
sin - 参数的正弦,以弧度为单位
此 MATLAB 函数 返回 X 的元素的正弦。sin 函数按元素处理 数组。该函数同时接受实数和复数
输入。 对于 X 的实数值,sin(X) 返回区间 [-1, 1] 内的实数值。 对于 X 的复数
值,sin(X) 返回复数值。
语法
Y = sin(X)
输入参数
X - 输入角(以弧度为单位)
标量 | 向量 | 矩阵 | 多维数组 | 表 | 时间表
输出参数
Y - 输入角正弦
标量 | 向量 | 矩阵 | 多维数组 | 表 | 时间表
...
|
1
2
| % 可以使用help 查看常量的详细说明
>> help pi
|
💻 运行结果
1
2
| >> help pi
pi 3.141592653589793...
|
1
2
| % 使用type命令查看sin.m文件的内容
>> type sin.m
|
💻 运行结果
1
2
3
4
5
6
7
| >> type sin.m
%SIN Sine of argument in radians.
% SIN(X) is the sine of the elements of X.
%
% See also ASIN, SIND, SINPI.
% Copyright 1984-2018 The MathWorks, Inc.
% Built-in functio
|
默认情况下,MATLAB 显示带有四个小数位值的数字(short format)。使用 format 命令提高精度。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| >> format long % 将数字四舍五入到小数点后16位
>> x = 7 + 10/3 + 5 ^ 1.2
>> format short % 将数字四舍五入到小数点后3位
>> x = 7 + 10/3 + 5 ^ 1.2
>> format bank % 将数字四舍五入到小数点后两位
>> x = 7 + 10/3 + 5 ^ 1.2
>> format short e % 以科学计数法形式显示
>> x = 7 + 10/3 + 5 ^ 1.2
>> format long e % 以指数形式显示
>> x = 7 + 10/3 + 5 ^ 1.2
>> format rat % 给出由计算得出的最接近的有理表达式
>> x = 7 + 10/3 + 5 ^ 1.2
|
💻 运行结果
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| >> format long
>> x = 7 + 10/3 + 5 ^ 1.2
x = 13.699783451176675
>> format short
>> x = 7 + 10/3 + 5 ^ 1.2
x = 13.6998
>> format bank
>> x = 7 + 10/3 + 5 ^ 1.2
x = 13.70
>> format short e
>> x = 7 + 10/3 + 5 ^ 1.2
x = 1.3700e+01
>> format long e
>> x = 7 + 10/3 + 5 ^ 1.2
x = 1.369978345117668e+01
>> format rat
>> x = 7 + 10/3 + 5 ^ 1.2
x = 1523/111
|
MATLAB 变量命名
变量名称由字母组成,后跟任意数量的字母、数字或下划线。MATLAB 是 case-sensitive(区分大小写)。
变量名称可以是任意长度,但是 MATLAB 仅使用前 N 个字符,其中 N 由函数 namelengthmax 给定。
1
2
3
4
5
| a_1;
a2;
a2_;
% a#1; % 错误:包含非法字符
% 1a; % 错误:以数字开头
|
MATLAB 变量初始化
将需要使用的变量保存到工作区中。在后续的计算中,您可以直接使用这些变量。
⚠️ 注意: 变量在使用前必须具有值。
1
2
| >> x = 3 % 定义x并用值初始化它
>> x = sqrt(16) % 定义x并用表达式初始化它
|
💻 运行结果
1
2
3
4
5
| >> x = 3
x = 3
>> x = sqrt(16)
x = 4
|
⚠️ 注意: 当表达式返回未分配给任何变量的结果时,系统会将其分配给名为 ans 的变量。
1
2
3
4
5
| >> sqrt(78)
>> 9876/ans
%更多示例
>> x = 7 * 8;
>> y = x * 7.89
|
💻 运行结果
1
2
3
4
5
6
7
8
9
| >> sqrt(78)
ans = 8.8318
>> 9876/ans
ans = 1.1182e+03
>> x = 7 * 8;
>> y = x * 7.89
y = 55.2300
|
⚠️ 避免使用 ans 变量,因为它会覆盖其他变量。
多项分配
您可以在同一行上进行多个分配,每个分配之间用分号(;)分隔。
1
| >> a = 2; b = 7; c = a * b
|
💻 运行结果
1
2
| >> a = 2; b = 7; c = a * b
c = 14
|
🔣 运算符
运算符是一个符号,告诉编译器执行特定的数学或逻辑操作。MATLAB 设计为主要在整个矩阵和数组上运行。因此,MATLAB 中的运算符既可以处理标量数据,也可以处理非标量数据。MATLAB 允许以下类型的基本运算:
算术运算符、关系运算符、逻辑运算符、按位运算符、集合运算符
关系运算符
| 序号 | 运算符和说明 |
|---|
| 1 | < 小于 |
| 2 | <= 小于或等于 |
| 3 | > 大于 |
| 4 | >= 大于或等于 |
| 5 | == 等于 |
| 6 | ~= 不等于 |
1
2
3
4
| >> 2 == 3
>> 2 >= 3
>> 2 <= 3
>> 2 ~= 3
|
💻 运行结果
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| >> 2 == 3
ans = logical
0
>> 2 >= 3
ans =
logical
0
>> 2 <= 3
ans =
logical
1
>> 2 ~= 3
ans =
logical
1
|
逻辑运算符
MATLAB 提供以下逻辑运算符:
1
2
3
| >> 2 == 3 & 2 ~= 3 % & 表示且
>> 2 == 3 | 2 ~= 3 % | 表示或
>> ~( 2 == 3) % ~ 表示非
|
💻 运行结果
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| >> 2 == 3 & 2 ~= 3
ans =
logical
0
>> 2 == 3 | 2 ~= 3
ans =
logical
1
>> ~(2 == 3)
ans =
logical
1
|
📤 输入输出
输入输出命令
| 命令 | 目的 |
|---|
disp | 显示数组或字符串的内容 |
fscanf | 从文件中读取格式化的数据 |
format | 控制屏幕显示格式 |
fprintf | 执行对屏幕或文件的格式化写入 |
input | 显示提示并等待输入 |
; | 禁止打印 |
disp 函数
1
2
3
4
5
6
| %显示字符串
>> disp("Hello, MATLAB!")
%显示数字
>> disp(4)
%包含字符串和数字,需要使用num2str函数将数字转换为字符串
>> disp("x is " + num2str(4))
|
💻 运行结果
1
2
3
4
5
6
7
8
| >> disp("Hello, MATLAB!")
Hello, MATLAB!
>> disp(4)
4
>> disp("x is " + num2str(4))
x is 4
|
1
2
| >> x = input("输入一个数:");
>> disp("x is " + num2str(x))
|
💻 运行结果
1
2
3
4
| >> x = input("输入一个数:");
输入一个数: 5
>> disp("x is " + num2str(x))
x is 5
|
fprintf 函数
1
| fprintf("x is %d\n", 4)
|
💻 运行结果
1
2
| >> fprintf("x is %d\n", 4)
x is 4
|
格式化代码
| 格式代码 | 目的 |
|---|
%s | 格式化为字符串 |
%d | 格式化为整数 |
%f | 格式化为浮点值 |
%e | 以科学计数形式格式化为浮点值 |
%g | 以最紧凑的格式进行格式化:%f或%e |
\n | 在输出字符串中插入新行 |
\t | 在输出字符串中插入一个选项卡 |
文件写入
1
2
3
4
5
6
| %使用fopen函数打开文件
fid = fopen('test.txt', 'w', 'n', 'UTF-8');
%使用fprintf函数写入文件
fprintf(fid, "x is %d\n", 4);
%写完后关闭文件
fclose(fid);
|
🔄 控制结构
条件语句
if…end 语句
1
2
3
4
5
| clear; clc;
x = 3;
if x == 3
disp("x is 3")
end
|
💻 运行结果
if…else…end 语句
1
2
3
4
5
6
7
| clear; clc;
x = 3;
if x == 3
disp("x is 3")
else
disp("x is not 3")
end
|
💻 运行结果
if…elseif…else…end 语句
1
2
3
4
5
6
7
8
9
| clear; clc;
x = 6;
if x == 3
disp("x is 3")
elseif x == 5
disp("x is 5")
else
disp("x is not 3 or 5")
end
|
💻 运行结果
⚠️ 注意: 一个 if...elseif...else...end 语句中,只能有一个 else 语句,且 else 语句必须放在最后。在 if 语句结束后必须使用 end 语句结束。
switch 语句
1
2
3
4
5
6
7
8
9
10
| %switch 的基本结构
switch 表达式
case 值1
语句1
case 值2
语句2
...
otherwise
语句n
end
|
示例:
1
2
3
4
5
6
7
8
9
10
| clear; clc;
x = 3;
switch x
case 3
disp("x is 3")
case 5
disp("x is 5")
otherwise
disp("x is not 3 or 5")
end
|
💻 运行结果
循环语句
for 循环
1
2
3
4
| %for 的基本结构
for 变量 = 起始值:步长:结束值
语句
end
|
示例:
1
2
3
| for i = 1:2:10
disp("i is " + num2str(i))
end
|
💻 运行结果
1
2
3
4
5
| i is 1
i is 3
i is 5
i is 7
i is 9
|
嵌套 for 循环
在 for 循环中嵌套 for 循环,可以实现更复杂的循环结构。
1
2
3
4
5
| for i = 1:2:10
for j = 1:2:3
disp("i = " + num2str(i) + " j = " + num2str(j) + " i+j =" + num2str(i+j))
end
end
|
💻 运行结果
1
2
3
4
5
6
7
8
9
10
| i = 1 j = 1 i+j =2
i = 1 j = 3 i+j =4
i = 3 j = 1 i+j =4
i = 3 j = 3 i+j =6
i = 5 j = 1 i+j =6
i = 5 j = 3 i+j =8
i = 7 j = 1 i+j =8
i = 7 j = 3 i+j =10
i = 9 j = 1 i+j =10
i = 9 j = 3 i+j =12
|
循环控制语句
break 语句
当循环遇到 break 语句时,循环会立即退出。
1
2
3
4
5
6
| for i = 1:1:10
if i == 5
break
end
disp("i = " + num2str(i))
end
|
💻 运行结果
1
2
3
4
| i = 1
i = 2
i = 3
i = 4
|
continue 语句
当循环遇到 continue 语句时,循环会跳过当前迭代,继续执行下一次迭代。
1
2
3
4
5
6
| for i = 1:1:10
if i == 5
continue
end
disp("i = " + num2str(i))
end
|
💻 运行结果
1
2
3
4
5
6
7
8
9
| i = 1
i = 2
i = 3
i = 4
i = 6
i = 7
i = 8
i = 9
i = 10
|