load 是 MATLAB 中一个非常基础且核心的命令,它的主要作用是从文件中加载数据到 MATLAB 的工作区中,使其成为变量。

load 命令的基本语法
load 命令的语法非常灵活,可以根据不同的文件类型和格式进行调整。
语法 1: 加载整个文件 (最常用)
load filename
filename: 要加载的文件名。- 效果:
- 如果文件是 MATLAB 的
.mat文件,load会将其中存储的所有变量加载到工作区中。 - 如果文件是纯文本文件(如
.txt,.csv,.dat),load会尝试将其加载为一个名为filename(不带扩展名)的变量,通常是数值矩阵。 - 如果文件是
.mat文件,并且该文件中只包含一个变量,那么加载后该变量的名称就是filename(不带扩展名)。
- 如果文件是 MATLAB 的
语法 2: 加载 .mat 文件中的特定变量
load filename variable_name
filename:.mat文件名。variable_name: 要加载的变量名,可以是一个字符串,也可以是一个包含多个变量名的元胞数组。- 效果: 只有指定的变量才会被加载到工作区,其他变量会被忽略。
语法 3: 将加载的变量指定为新的名称
load filename new_variable_name
filename:.mat文件名。new_variable_name: 为加载后的变量指定的新名称。- 前提: 这个语法只适用于
.mat文件中只包含一个变量的情况。 - 效果: 文件中的变量会被加载,并被命名为
new_variable_name。
语法 4: 从纯文本文件中加载数据并指定输出变量名
A = load('filename.txt')
filename.txt: 纯文本文件名。A: 你为数据指定的变量名。- 效果: 将文件中的数据加载到变量
A中,这是加载文本数据时最推荐的方式,因为它明确地指定了输出变量。
load 命令能加载哪些文件类型?
load 命令主要处理两种类型的文件:
a) MATLAB 数据文件 (.mat 文件)
这是 MATLAB 的专有二进制数据格式,用于保存一个或多个 MATLAB 变量,它效率高,能保存各种数据类型(矩阵、结构体、元胞数组、对象等)。
示例:
假设你有一个名为 my_data.mat 的文件,它是在 MATLAB 中通过 save 命令创建的:

% 创建一些数据 A = rand(3, 4); B = 'Hello World'; S.a = 10; S.b = [1 2 3]; % 保存到 .mat 文件 save my_data.mat A B S
使用 load 来加载它们:
% 加载所有变量
load my_data.mat
% 检查工作区
whos
% 你会看到 A, B, S 都已经存在了
% 只加载变量 A
load my_data.mat A
% 将变量 A 加载并命名为 C
% (前提是 my_data.mat 中只有 A 一个变量,或者我们使用下面更安全的方式)
C = load('my_data.mat', 'A');
b) 纯文本数据文件 (如 .txt, .csv, .dat)
load 命令可以读取简单的、格式规整的文本文件,文件中的数据必须由空格、逗号或制表符分隔。
规则:
- 文件的第一行通常被解释为列标题(字符串),或者如果全是数字,则被视为数据的第一行。
- 如果文件包含非数字字符(如列标题),
load会失败。 load会忽略文件中的空行和以 开头的注释行。
示例:
假设你有一个名为 sensor_data.txt 的文件,内容如下:

Time,Temp,Pressure
1,25.1,1013.2
2,25.3,1012.8
3,24.9,1013.5
错误的使用方式:
load sensor_data.txt % 这会报错,因为第一行是字符串
正确的方式 1: 使用 importdata
importdata 是一个更强大的函数,可以处理带有头文件和混合数据的文本文件。
[data, headers] = importdata('sensor_data.txt', ',');
% data 是一个数值矩阵
% headers 是一个元胞数组,包含列名
disp(data);
disp(headers);
正确的方式 2: 使用 readtable (推荐)的文本文件(尤其是 CSV),readtable 是最佳选择,它会直接创建一个 table 变量。
T = readtable('sensor_data.txt');
% T 是一个 table 变量,列名为 'Time', 'Temp', 'Pressure'
disp(T);
% 访问数据
disp(T.Time);
disp(T.Pressure(1));
正确的方式 3: 如果文件没有标题行
sensor_data.txt 文件内容是纯数字:
1,25.1,1013.2
2,25.3,1012.8
3,24.9,1013.5
load 就可以完美工作:
sensor_data = load('sensor_data.txt'); % 使用输出变量名是好习惯
% sensor_data 是一个 3x3 的 double 矩阵
disp(sensor_data);
高级选项
load 命令还支持一些可选参数,使其更灵活。
'-mat' 和 '-ascii'
这两个选项可以明确指定文件类型,避免 load 自动判断。
% 强制将文件作为二进制 .mat 文件加载
load('my_data.txt', '-mat');
% 强制将文件作为 ASCII 文本文件加载
load('my_data.mat', '-ascii');
'-nocompression'
当加载由 save -v7.3 创建的大型压缩 .mat 文件时,可以使用此选项来禁用解压缩过程。
'-regexp'
使用正则表达式来匹配 .mat 文件中的变量名。
% 加载所有以 'data' 开头的变量 load my_data.mat '-regexp' '^data'
load 的替代方案
虽然 load 很强大,但在某些场景下,其他函数可能更合适:
| 函数 | 适用场景 | 优点 |
|---|---|---|
load |
加载 .mat 文件或简单的纯数字文本文件。 |
简单、快捷。 |
save |
与 load 配对,将工作区变量保存为 .mat 文件。 |
load 的反向操作。 |
importdata |
加载混合数据类型(文本和数字)的文本文件。 | 比 load 更健壮,能处理复杂文本格式。 |
readtable |
的文本文件(CSV, TSV等)。 | 强烈推荐。 创建易于操作的 table 变量,保留列名。 |
readmatrix |
加载纯数字的文本文件,输出为矩阵。 | 比 load 更明确,专为数字矩阵设计。 |
csvread / csvwrite |
专门用于读写 CSV 文件。 | 功能较旧,readmatrix / writematrix 是现代替代品。 |
fopen, fscanf, textscan |
读取格式非常复杂或不规则的文本文件。 | 提供最大的控制力,但代码量也更多。 |
总结与最佳实践
.mat文件: 使用load filename或load filename var1 var2,这是最高效、最可靠的方式。- 的文本文件 (如 CSV): 首选
readtable,它能完美处理列标题,并生成方便的table数据类型。 - 纯数字文本文件: 可以使用
load或readmatrix。A = load('file.txt')是简洁的写法。 - 复杂文本文件: 使用
importdata或更底层的fopen/textscan进行精细控制。
load 是 MATLAB 的基石之一,掌握它能让你高效地管理数据,是进行后续分析和可视化的第一步。
