MATLAB 变量
变量命名
在 MATLAB 环境中,每个变量都是一个数组或矩阵。MATLAB 变量命名规则:
- 必须以字母开头
- 可以包含字母、数字和下划线
- 区分大小写
- 长度不超过 63 个字符
可以通过简单的方式分配变量。
1 | x2 = 3; thirus_normary = 19; |
变量基础
在MATLAB环境中,每个变量都是一个数组或矩阵。
可以通过简单的方式分配变量。例如,
1 | x2 = 3; %定义x2并用值初始化它 |
MATLAB将执行上述语句并返回结果 x2 = 3
这个变量的含义是它创建一个名为x2的1乘1矩阵,并将值 3 存储在其元素中。
注意
- 将变量输入系统后,您以后可以参考它。
- 变量在使用前必须具有值。
- 当表达式返回未分配给任何变量的结果时,系统会将其分配给名为ans的变量,该变量可在以后使用。
1 | sqrt(78) |
MATLAB将执行上述语句并返回以下结果
1 | ans = 8.8318 |
多项分配
可以在同一行上进行多个分配(使用逗号分隔):
1 | a = 12; b = 7; c = a * b % 最后一个表达式结果会显示 |
或者使用括号分组
1 | [a, b, c] = deal(12, 7, a*b); % 使用deal函数批量赋值 |
who 和 whos 命令
who命令显示您已使用的所有变量名。
1 | who |
MATLAB将执行上述语句并返回以下结果
1 | 您的变量为: |
whos命令显示了有关变量的更多信息
- 当前内存中的变量
- 每个变量的类型
- 分配给每个变量的内存
- 它们是否为复杂变量
1 | Name Size Bytes Class Attributes |
clear 命令
clear命令用于从内存中删除变量:
1 | clear x2; % 删除指定变量 |
变量持久化
使用save
和load
命令实现变量的磁盘存储与恢复:
1 | save('mydata.mat'); % 保存所有变量到文件 |
内存管理技巧
- 使用
whos
监控内存使用 - 大矩阵运算后使用
clear
释放内存 - 使用
save
将暂时不用的变量存入文件 - 避免创建不必要的大型中间变量
1 | % 高效计算示例 |
长作业与续行符
可以使用省略号 (…) 将长语句扩展到多行:
1 | % 物理公式示例 |
格式控制命令
MATLAB 提供多种输出格式控制:
命令 | 描述 | 示例输出 (π) |
---|---|---|
format short | 短格式(默认,4 位小数) | 3.1416 |
format long | 长格式(16 位小数) | 3.141592653589793 |
format bank | 银行格式(2 位小数) | 3.14 |
format shortE | 短格式科学计数法 | 3.1416e+00 |
format longE | 长格式科学计数法 | 3.141592653589793e+00 |
format rat | 有理格式(分数表示) | 355/113 |
format hex | 十六进制格式 | 400921fb54442d18 |
默认情况下,MATLAB显示带有四个小数位值的数字。这就是所谓的short format。
但是,如果要提高精度,则需要使用format命令。
例如
format long命令在小数点后显示16位数字。
format short命令是默认格式,默认,4 位小数
1 | format long |
MATLAB将执行上述语句并返回以下结果
1 | 17.231981640639408 |
变量类型与赋值特性
MATLAB 是动态类型语言,变量类型由赋值自动确定:
1 | a = 42; % 双精度数值 |
注意:
- 变量在使用前必须赋值
- 变量名不能与 MATLAB 内置函数名冲突(如
sin
,pi
等) - 赋值语句不需要分号结尾,但分号可抑制输出
特殊变量
MATLAB 保留了一些特殊变量:
变量名 | 描述 |
---|---|
ans | 最近未赋值的计算结果 |
pi | 圆周率 π |
i, j | 虚数单位 √(-1) |
Inf | 无穷大 |
NaN | 非数字(Not a Number) |
eps | 浮点数精度 |
realmax | 最大正浮点数 |
realmin | 最小正浮点数 |
MATLAB 命令
MATLAB是一个用于数值计算和数据可视化的交互式程序。您可以通过在命令窗口的MATLAB提示符 ‘>>’ 处键入命令来输入命令。
在本节中,我们将提供常用的通用MATLAB命令列表。
用于管理会话的命令
MATLAB提供了用于管理会话的各种命令。下表提供了所有此类命令
命令 | 目的 |
---|---|
clc | 清除命令窗口。 |
clear | 从内存中删除变量。 |
exist | 检查文件或变量的存在。 |
global | 声明变量为全局变量。 |
help | 搜索帮助主题。 |
lookfor | 在帮助条目中搜索关键字。 |
quit | 停止MATLAB。 |
who | 列出当前变量。 |
whos | 列出当前变量(长显示)。 |
用于系统的命令
MATLAB提供了各种有用的命令来处理系统,例如将当前工作作为文件保存在工作区中,并在以后加载文件。
它还为其他与系统相关的活动提供各种命令,例如显示日期,在目录中列出文件,显示当前目录等。
下表显示了一些常用的与系统相关的命令
命令 | 目的 |
---|---|
cd | 更改当前目录。 |
date | 显示当前日期。 |
delete | 删除文件。 |
diary | 开启/关闭日记文件录制。 |
dir | 列出当前目录中的所有文件。 |
load | 从文件加载工作区变量。 |
path | 显示搜索路径。 |
pwd | 显示当前目录。 |
save | 将工作空间变量保存在文件中。 |
type | 显示文件的内容。 |
what | 列出当前目录中的所有MATLAB文件。 |
wklread | 读取.wk1电子表格文件。 |
输入和输出命令
MATLAB提供以下与输入和输出相关的命令
命令 | 目的 |
---|---|
disp | 显示数组或字符串的内容。 |
fscanf | 从文件中读取格式化的数据。 |
format | 控制屏幕显示格式。 |
fprintf | 执行对屏幕或文件的格式化写入。 |
input | 显示提示并等待输入。 |
; | 禁止丝网印刷。 |
fscanf和fprintf命令的行为像C的scanf和printf函数。它们支持以下格式代码-
格式代码 | 目的 |
---|---|
%s | 格式化为字符串。 |
%d | 格式化为整数。 |
%f | 格式化为浮点值。 |
%e | 以科学计数形式格式化为浮点值。 |
%g | 以最紧凑的格式进行格式化:%f或%e。 |
*** | 在输出字符串中插入新行。 |
** | 在输出字符串中插入一个选项卡。 |
格式函数具有以下用于数字显示的形式-
格式功能 | 最多显示 |
---|---|
format short | 四个小数位(默认值)。 |
format long | 16位小数。 |
format short e | 五位数加指数。 |
format long e | 16位数字加指数。 |
format bank | 两个小数位数。定点货币形式 |
format + | 正数,负数或零。 |
format rat | 有理近似。小数分数表示 |
format compact | 禁止某些换行符。 |
format loose | 重置为不太紧凑的显示模式。 |
高级输入输出技术
MATLAB 提供了更灵活的数据导入 / 导出函数:
命令 | 适用场景 |
---|---|
importdata | 自动识别并导入文本文件、电子表格或图像数据 |
readtable | 读取表格数据到 table 对象,支持标题行、缺失值处理等 |
writetable | 将 table 对象写入文件(CSV、XLSX 等) |
csvread/csvwrite | 简化的 CSV 文件读写函数 |
xlswrite/xlsread | 读写 Excel 文件(需安装 Excel 或兼容组件) |
向量,矩阵和数组命令
下表显示了用于处理数组,矩阵和向量的各种命令-
命令 | 目的 |
---|---|
cat | 连接数组。 |
find | 查找非零元素的索引。 |
length | 计算元素数。 |
linspace | 创建规则间隔的矢量。 |
logspace | 创建对数间隔的向量。 |
max | 返回最大元素。 |
min | 返回最小的元素。 |
prod | 每列的乘积。 |
reshape | 更改大小。 |
size | 计算数组大小。 |
sort | 对每一列进行排序。 |
sum | 对每列求和。 |
eye | 创建一个单位矩阵。 |
ones | 创建一个数组。 |
zeros | 创建一个零数组。 |
cross | 计算矩阵叉积。 |
dot | 计算矩阵点积。 |
det | 计算数组的行列式。 |
inv | 计算矩阵的逆。 |
pinv | 计算矩阵的伪逆。 |
rank | 计算矩阵的秩。 |
rref | 计算精简行梯形表格。 |
cell | 创建单元格数组。 |
celldisp | 显示单元格数组。 |
cellplot | 显示单元格数组的图形表示形式。 |
num2cell | 将数字数组转换为单元格数组。 |
deal | 匹配输入和输出列表。 |
iscell | 标识单元格数组。 |
绘图命令
MATLAB提供了许多用于绘制图形的命令。下表显示了一些常用的绘图命令-
命令 | 目的 |
---|---|
axis | 设置轴限制。 |
fplot | 函数的智能绘图。 |
grid | 显示网格线。 |
plot | 生成xy图。 |
打印图或将图保存到文件中。 | |
title | 将文本放在图的顶部。 |
xlabel | 在x轴上添加文本标签。 |
ylabel | 将文本标签添加到y轴。 |
axes | 创建轴对象。 |
close | 关闭当前图。 |
close all | 关闭所有地块。 |
figure | 打开一个新的图形窗口。 |
gtext | 通过鼠标启用标签放置。 |
hold | 冻结当前图。 |
legend | 用鼠标放置图例。 |
refresh | 重新绘制当前图形窗口。 |
set | 指定对象(例如轴)的属性。 |
subplot | 在子窗口中创建图。 |
text | 在图中放置字符串。 |
bar | 创建条形图。 |
loglog | 创建对数-对数图。 |
polar | 创建极坐标图。 |
semilogx | 创建半对数图。(对数横坐标)。 |
semilogy | 创建半对数图。(对数纵坐标)。 |
stairs | 创建楼梯图。 |
stem | 创建茎图。 |
1 | % 图形美化示例 |
交互式绘图命令
命令 | 功能 |
---|---|
ginput | 通过鼠标在图形上获取坐标点 |
zoom | 启用图形缩放功能 |
pan | 启用图形平移功能 |
datacursormode | 在图形上显示数据光标,获取精确坐标值 |
impixelinfo | 在图像上显示像素信息 |
colorbar | 添加颜色条,显示颜色映射关系 |
colormap | 设置图形的颜色映射表,支持 jet、hsv、gray 等多种预设 |
图形导出与保存
命令 | 功能 |
---|---|
saveas | 将当前图形保存为指定格式的文件 |
更灵活的图形导出命令,支持分辨率、纸张大小等参数控制 | |
exportgraphics | MATLAB R2020b 及以后版本提供的导出命令,优化了图形保存质量 |
1 | % 图形保存示例 |
MATLAB M文件
到目前为止,我们已经使用MATLAB环境作为计算器。但是,MATLAB还是一种强大的编程语言,也是一种交互式计算环境。MATLAB还允许您将一系列命令写入文件并以完整的单元形式执行文件,例如编写函数和调用它。
MATLAB允许编写两种程序文件
- 脚本:脚本文件是扩展名为 .m 的程序文件。在这些文件中,您编写了一系列要一起执行的命令。脚本不接受输入,也不返回任何输出。它们对工作区中的数据进行操作。
- 函数:函数文件也是扩展名为 .m 的程序文件。函数可以接受输入并返回输出。内部变量是函数的局部变量。
您可以使用MATLAB编辑器或任何其他文本编辑器来创建.m文件。在本节中,我们将讨论脚本文件。脚本文件包含多行MATLAB命令和函数调用。您可以通过在命令行中输入脚本名称来运行脚本。
如果使用命令提示符,请键入edit命令提示符。这将打开编辑器。您可以直接输入edit,然后输入文件名(扩展名为.m)
1 | edit |
上面的命令将在默认的MATLAB目录中创建文件。如果要将所有程序文件存储在特定文件夹中,则必须提供完整路径。
让我们创建一个名为progs的文件夹。在命令提示符(>>)处键入以下命令,这和 bash 的命令是差不多的
1 | mkdir progs % create directory progs under default directory |