Main Content

load

将文件变量加载到工作区中

说明

示例

load(filename) 将数据从 filename 加载到 MATLAB® 工作区。如果 filename 是 MAT 文件,则 load(filename) 从文件中加载变量;如果 filename 是 ASCII 文件,则 load(filename) 从该文件加载包含数据的双精度数组。

注意

安全注意事项:load 命令在初始化变量时可能会执行 MAT 文件中包含的代码。请避免对不受信任的 MAT 文件调用 load

示例

load(filename,variables) 加载 MAT 文件 filename 中的指定变量。

示例

load(filename,"-ascii")filename 视为 ASCII 文件,而不管文件扩展名如何。

load(filename,"-mat")filename 视为 MAT 文件,而不管文件扩展名如何。

load(filename,"-mat",variables) 加载 filename 中的指定变量。

示例

S = load(___) 使用上述语法中的任何输入参量组合将数据加载到 S 中。如果 filename 是 MAT 文件,则 S 是结构体数组;如果 filename 是 ASCII 文件,则 S 是一个包含文件中数据的 m×n 双精度数组,其中 m 是文件中的行数,n 是每行上值的数目。

示例

load filename 是该语法的命令形式。命令形式需要的特殊字符较少。您无需键入括号或者将输入括在单引号或双引号内。使用空格(而不是逗号)分隔各个输入项。如果任一输入包含空格,请用单引号将其引起来。

例如,要加载名为 test.mat 的文件,以下语句是等效的:

load test.mat    % command form
load("test.mat") % function form

您可以包括上述语法中介绍的任何输入。例如,要从名为 my file.mat 的文件中加载变量 X,请执行以下命令:

load 'my file.mat' X    % command form, using single quotes
load("my file.mat","X") % function form, using double quotes

当有任何输入(例如 filename)为变量时,请不要使用命令格式。

示例

全部折叠

将 MAT 文件 gong.mat 中的所有变量加载到 MATLAB 工作区。

首先,检查工作区的内容。

whos

查看 gong.mat 的内容。

whos("-file","gong.mat")
  Name          Size             Bytes  Class     Attributes

  Fs            1x1                  8  double              
  y         42028x1             336224  double              

加载 gong.mat,然后再次检查工作区的内容。

load("gong.mat")
whos
  Name          Size             Bytes  Class     Attributes

  Fs            1x1                  8  double              
  y         42028x1             336224  double              

您也可以使用命令语法加载变量。清除以前加载的变量,并重复加载操作。

clear y Fs
load gong.mat

仅加载示例文件 handel.mat 中的变量 y。如果工作区已包含变量 y,加载操作将使用文件中的数据来覆盖它。

load("handel.mat","y")

您也可以使用命令语法加载变量 y

load handel.mat y

查看示例文件 accidents.mat 的内容。

whos -file accidents.mat
  Name              Size            Bytes  Class     Attributes

  datasources       3x1              2700  cell                
  hwycols           1x1                 8  double              
  hwydata          51x17             6936  double              
  hwyheaders        1x17             2622  cell                
  hwyidx           51x1               408  double              
  hwyrows           1x1                 8  double              
  statelabel       51x1              6188  cell                
  ushwydata         1x17              136  double              
  uslabel           1x1               130  cell                

使用函数语法加载文件中所有名称不以 hwy 开头的变量。

load("accidents.mat","-regexp","^(?!hwy)...")

或者使用命令语法来加载相同变量。

load accidents.mat -regexp '^(?!hwy)...'

文件 durer.mat 包含变量 Xcaptionmap。创建要加载的变量名称元胞数组。

filename = "durer.mat";
myVars = {"X","caption"};

将所选变量从 durer.mat 加载到一个结构体数组中。

S = load(filename,myVars{:})
S = struct with fields:
          X: [648x509 double]
    caption: [2x28 char]

仅将变量 Xcaption 加载到结构体数组 S 中。

为多个 4 列矩阵创建一个 ASCII 文件,并将数据重新加载回双精度数组之中。

a = magic(4);
b = -5.7*ones(2,4);
c = [8 6 4 2];
save mydata.dat a b c -ascii
clear a b c

load mydata.dat -ascii

load 创建名为 mydatadouble 类型的数组。

查看 mydata 的相关信息。

whos mydata
  Name        Size            Bytes  Class     Attributes

  mydata      7x4               224  double              

输入参数

全部折叠

文件名,指定为字符串标量或字符向量。如果未指定 filenameload 函数将搜索名为 matlab.mat 的文件。

如果 filename 没有扩展名(即不以句点后跟文本结尾),load 将搜索名为 filename 并追加了 .mat 的文件。如果 filename 的扩展名不为 .matload 函数会将该文件视为 ASCII 数据。

注意

ASCII 文件必须包含数字的矩形表格,并且每行中的元素数目相等。文件分隔符(每行中的元素之间的字符)可以为空格、逗号、分号或制表符。文件可包含 MATLAB 注释(以百分比符号 % 开头的行)。

根据文件的位置,filename 可以采用下列形式之一。

位置

形式

当前文件夹或 MATLAB 路径上的文件夹

指定 filename 中文件的名称。

例如:"myFile.mat"

文件夹中的文件

如果该文件不在当前文件夹或 MATLAB 路径下的文件夹中,则在 filename 中指定完整或相对路径。

例如:"C:\myFolder\myFile.mat"

例如:"dataDir\myFile.mat"

远程位置(仅限 7.3 版 MAT 文件)

如果文件存储在远程位置,则将 filename 指定为以下形式的统一资源定位器 (URL):

scheme_name://path_to_file/my_file.mat

根据您的远程位置,scheme_name 可以是下表中的值之一。

远程位置scheme_name
Amazon S3™s3
Windows Azure® Blob 存储wasb, wasbs
HDFS™hdfs

load 函数从远程位置加载数据时仅支持 7.3 版 MAT 文件。

有关设置 MATLAB 以访问在线存储服务的详细信息,请参阅处理远程数据

例如:"s3://bucketname/path_to_file/my_file.mat"

使用命令形式的 load 时,您无需将输入用单引号或双引号引起来。但如果 filename 包含空格,则您必须将参量用单引号引起来。例如,load 'filename withspace.mat'

要加载的变量的名称,指定为一个或多个字符串标量或字符向量。使用命令形式的 load 时,您无需将输入用单引号引起来。

variables 可以是以下形式之一。

variables 输入的格式要加载的变量
var1,var2,...,varN加载列出的变量,指定为单个字符串标量或字符向量。使用 "*" 通配符来匹配模式。例如,load("filename.mat","A*")load filename.mat A* 会加载文件中所有名称以 A 开头的变量。
"-regexp",expr1,expr2,...,exprN仅加载其名称与正则表达式匹配的变量,指定为字符串标量或字符向量。例如,load("filename.mat","-regexp","^Mon","^Tues")load filename.mat -regexp ^Mon ^Tues 仅加载文件中名称以 MonTues 开头的变量。

局限性

  • 使用远程数据时,load 不支持将输入文件视为 ASCII 文件。

提示

  • 您可以使用以下策略来加速从网络驱动器加载 MAT 文件:

    • 在将 load 函数应用于本地副本之前,使用 copyfile 函数将文件从网络驱动器复制到本地驱动器。

    • 使用 matfile 函数访问文件,而不将其加载到工作区中。

    • 减少或禁止刷新当前文件夹浏览器。为此,请转至主页选项卡,在环境部分中,选择 预设项。选择 MATLAB > 当前文件夹。您可以将自动刷新间隔秒数值增大到大于默认值 3 的数值,或清除自动刷新文件系统视图复选框以禁用该功能。

算法

如果在从 ASCII 文件加载时未指定输出,load 函数会创建一个根据加载的文件命名的变量(删除任何文件扩展名)。例如,命令 load mydata.dat 将数据读取到名为 mydata 的变量中。例如,请参阅 加载 ASCII 文件

要创建变量名称,load 会在 filename 中的任何前导下划线或数字前面添加一个 X,并使用下划线取代任何其他非字母字符。例如,命令 load 10-May-data.dat 会创建一个名为 X10_May_data 的变量。

扩展功能

版本历史记录

在 R2006a 之前推出

全部展开