文章

MATLAB 基本语法指南

🚀 MATLAB 基本语法完全指南

MATLAB 是科学计算和工程应用的重要工具,掌握基本语法是使用 MATLAB 的基础。本文将系统介绍 MATLAB 的基本语法,包括环境操作、基础语法、变量与命令、运算符、输入输出以及控制结构,帮助你快速入门 MATLAB 编程基础。


🖥️ MATLAB 环境介绍

MATLAB 环境就像一个超级复杂的计算器。您可以在 >> 命令提示符下输入命令。MATLAB 是一个解释型环境,您给出一个命令,MATLAB 立即执行该命令。

matlab.png

1
>> 5+5          % 加法运算

点击 Enter 键执行命令后,MATLAB 会显示结果。

💻 运行结果

1
2
>> 5+5
ans = 10

✍️ 基础语法

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
% 这是注释行,不会被执行

💻 运行结果

1
x = 9

4️⃣ 使用省略号(…)表示行连续运算符

省略号(…)用于指示连续行连续运算符的开始。

1
2
a = 3 ...      % 使用省略号继续到下一行
    + 5        % 3+5的加法运算,结果赋值给 a

💻 运行结果

1
a = 8

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

format 命令

默认情况下,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

input 函数

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

💻 运行结果

1
x is 3

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

💻 运行结果

1
x is 3

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

💻 运行结果

1
x is not 3 or 5

⚠️ 注意: 一个 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

💻 运行结果

1
x is 3

循环语句

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

本文由作者按照 CC BY 4.0 进行授权