目录
load函数的功能是将文件变量加载到工作区中。
语法
load(filename)
load(filename,variables)
load(filename,'-ascii')
load(filename,'-mat')
load(filename,'-mat',variables)
S = load(___)
load filename
说明
load(filenae) 从 filename 加载数据。
-
如果 filename 是 MAT 文件,load(filename) 会将 MAT 文件中的变量加载到 MATLAB® 工作区。
-
如果 filename 是 ASCII 文件,load(filename) 会创建一个包含该文件数据的双精度数组。
load(filenae,variables) 加载 MAT 文件 filename 中的指定变量。
load(filenae,'-ascii') 将 filename 视为 ASCII 文件,而不管文件扩展名如何。
load(filenae,'-mat') 将 filename 视为 MAT 文件,而不管文件扩展名如何。
load(filenae,'-mat',variables) 加载 filename 中的指定变量。
S = load(___) 使用前面语法组中的任意输入参数将数据加载到 S 中。
-
如果 filename 是 MAT 文件,则 S 是结构数组。
-
如果 filename 是 ASCII 文件,则 S 是包含该文件数据的双精度数组。
load filenae是该语法的命令形式。命令形式需要的特殊字符较少。无需键入括号或者将输入括在单引号或双引号内。使用空格(而不是逗号)分隔各个输入项。
例如,要加载名为 durer.mat 的文件,以下语句是等效的:
load durer.mat % command form
load('durer.mat') % function form
可以包括先前语法中介绍的任何输入。例如,要加载名为 X
的变量:
load durer.mat X % command form
load('durer.mat','X') % function form
当有任何输入(例如 filename)为变量或字符串时,请不要使用命令格式。
示例
加载 MAT 文件中的所有变量
加载示例 MAT 文件 gong.mat 中的所有变量。请在加载操作前后检查工作区的内容。
disp('Contents of workspace before loading file:')
whos
disp('Contents of gong.mat:')
whos('-file','gong.mat')
load('gong.mat')
disp('Contents of workspace after loading file:')
whos
也可以使用命令语法加载变量。清除以前加载的变量,并重复 load 操作。
clear y Fs
load gong.mat
加载 MAT 文件中的特定变量
仅加载示例文件 handel.mat 中的变量 y。如果工作区已包含变量 y,load 操作将使用文件中的数据来覆盖它。
load('handel.mat','y')
也可以使用命令语法加载变量y。
load handel.mat y
使用正则表达式加载特定变量
查看示例文件 accidents.mat 的内容。
whos -file accidents.mat
Name Size Bytes Class Attributes
datasources 3x1 2724 cell
hwycols 1x1 8 double
hwydata 51x17 6936 double
hwyheaders 1x17 2758 cell
hwyidx 51x1 408 double
hwyrows 1x1 8 double
statelabel 51x1 6596 cell
ushwydata 1x17 136 double
uslabel 1x1 138 cell
使用函数语法加载文件中所有名称不以 'hwy' 开头的变量。
load('accidents.mat', '-regexp', '^(?!hwy)...')
或者使用命令语法来加载相同变量。
load accidents.mat -regexp '^(?!hwy)...'
将变量列表加载到结构体数组中
文件 durer.mat 包含变量 X、caption 和 map。创建要加载的变量名称元胞数组。
filename = 'durer.mat';
myVars = {'X','caption'};
S = load(filename,myVars{:})
S = struct with fields:
X: [648x509 double]
caption: [2x28 char]
仅将变量 X 和 caption 加载到结构体数组 S 中。
加载 ASCII 文件
为多个 4 列矩阵创建一个 ASCII 文件,并将数据重新加载回双精度数组之中。
a = magic(4);
b = ones(2, 4) * -5.7;
c = [8 6 4 2];
save -ascii mydata.dat a b c
clear a b c
load mydata.dat -ascii
load 创建名为 mydata 的 double 类型的数组。查看 mydata 的相关信息。
whos mydata
Name Size Bytes Class Attributes
mydata 7x4 224 double
filename
- 文件名
文件的名称,指定为字符向量或字符串标量。如果未指定 filename,load 函数将搜索名为 matlab.mat 的文件。
filename 可包含文件扩展名以及完整或部分路径。如果 filename 没有扩展名(即句点后没有任何文本),load会搜索名为 filename.mat 的文件。如果 filename 的扩展名不为 .mat,load 函数会将该文件视为 ASCII 数据。
使用命令形式的 load 时,不需要将输入括在单引号内。但如果 filename 包含空格,则您必须将参数括在单引号中。例如,load 'filename withspace.mat'。
注意: 当 filename 是字符串时,请不要使用命令形式。ASCII 文件必须包含数字的矩形表格,并且每行中的元素数目相等。文件分隔符(每行中的元素之间的字符)可以为空格、逗号、分号或制表符。文件可包含 MATLAB 注释(以百分比符号 % 开头的行)。
variables
- 要加载的变量的名称
要加载的变量的名称,指定为一个或多个字符向量或字符串标量。使用命令形式的load时,您无需将输入括在单引号中。
注意:当 variables 是字符串时,请不要使用命令形式。variables 可以采用以下格式之一。
variables 输入的格式 | 要加载的变量 |
---|---|
var1,...,varN | 加载列出的变量,指定为单个字符向量或字符串。 可使用 '*' 通配符来匹配模式。例如,load('filename.mat','A*') 或 load filename.mat A* 会加载文件中所有名称以 A 开头的变量。 |
'-regexp',expr1,...,exprN | 只加载名称与正则表达式匹配的变量或字段,指定为字符向量或字符串。例如,load('filename.mat','-regexp','^Mon','^Tues') 或 load filename.mat -regexp ^Mon ^Tues 仅加载文件中名称以 Mon 或 Tues 开头的变量。 |
S
- 已加载的变量或数据
已加载的变量,以结构体数组形式返回(如果 filename 是 MAT 文件)。已加载的数据,以 double 类型的 m×n 数组形式返回(如果 filename 是 ASCII 文件)。m 等于文件行数,n 等于每一行的值数。
算法
如果未指定load函数的输出,MATLAB会创建一个根据加载的文件命名的变量(删除任何文件扩展名)。例如,以下命令
load mydata.dat
将数据读取到名为 mydata 的变量中。要创建变量名称,load 会在 filename 中的任何前导下划线或数字前面添加一个 X,并使用下划线取代任何其他非字母字符。例如,以下命令
load 10-May-data.dat
创建一个名为 X10_May_data 的变量。
扩展功能
C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。
用法说明和限制:
-
仅当生成 MEX 函数或代码进行 Simulink® 仿真时才使用 load。要加载编译时常量,请使用coder.load。
-
不支持在未将函数值赋给结构体或数组的情况下使用该函数。例如,请使用 S = load(filename),而不是 load(filename)。
-
输出 S 必须是不带任何下标的结构体或数组名称。例如,不支持 S(i) = load('myFile.mat')。
-
load 的参数必须为编译时常量字符向量。
-
如果 MAT 文件中包含不支持的结构体,可使用 S = load(filename,variables) 仅加载支持的结构体。
-
在用于代码生成的函数中,不支持使用 save 或将 coder.extrinsic 与 save 结合使用。要将工作区数据保存到 MAT 文件,请在生成代码之前使用 save 函数。
-
当使用 load 函数加载其大小在运行时可能会更改的变量时,必须通过使用 coder.varsize 将变量显式声明为可变大小数据。