【MATLAB】将数据保存在mat文件中 save/load/matfile

发布于:2025-04-11 ⋅ 阅读:(39) ⋅ 点赞:(0)

MAT文件为MATLAB格式的二进制文件

save()函数

save - 将工作区变量保存到文件中

save(filename) 将当前工作区中的所有变量保存在 MATLAB® 格式的二进制文件(MAT 文件)filename 中。如果 filename 已存在,save 会覆盖该文件。

save(filename,variables) 仅保存 variables 指定的结构体数组的变量或字段。

save(filename,variables,fmt) 以 fmt 指定的文件格式保存。variables 参数为可选参数。如果您不指定 variables,save 函数将保存工作区中的所有变量。

save(filename,variables,version) 保存为 version 指定的 MAT 文件版本。variables 参数为可选参数。

save(filename,variables,version,'-nocompression') 将变量保存到 MAT 文件,而不压缩。'-nocompression' 标志仅支持 7.3 版的 MAT 文件。因此,您必须将 version 指定为 '-v7.3'。variables 参数为可选参数。

save(filename,variables,'-append') 将新变量添加到一个现有文件中。如果 MAT 文件中已经存在变量,则 save 会使用工作区中的值覆盖它。
对于 ASCII 文件,'-append' 会将数据添加到文件末尾。
要追加到版本 6 的 MAT 文件,您还必须包括 '-v6' 作为输入参数。

save(filename,variables,'-append','-nocompression') 将新变量添加到一个现有文件中,而不进行压缩。现有文件必须是 7.3 版的 MAT 文件。

filename = 'guiData.mat';
a='a';
b=2;
% save(filename)%将当前工作区中的所有变量保存在MAT文件中,如果 filename 已存在,save 会覆盖该文件。
save(filename,'a','b')%保存指定变量为.mat文件,如果 filename 已存在,save 会覆盖该文件。
c=3;
save(filename,'c','-append')%追加变量而不覆盖文件

通过 whos 函数查看文件内容。

whos('-file',filename)%查看文件内容

load()函数

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

语法
load(filename)
load(filename,variables)
load(filename,'-ascii')
load(filename,'-mat')
load(filename,'-mat',variables)
S = load(___)
load filename

说明
load(filename) 从 filename 加载数据。
-如果 filename 是 MAT 文件,load(filename) 会将 MAT 文件中的变量加载到 MATLAB® 工作区。
-如果 filename 是 ASCII 文件,load(filename) 会创建一个包含该文件数据的双精度数组。
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 是包含该文件数据的双精度数组。
load filename 是该语法的命令形式。命令形式需要的特殊字符较少。您无需键入括号或者将输入括在单引号或双引号内。使用空格(而不是逗号)分隔各个输入项。
例如,要加载名为 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)为变量或字符串时,请不要使用命令格式。

load data.mat X Y

matfile()函数

matfile - 直接访问和更改 MAT 文件中的变量,而不加载到内存中

m = matfile(filename)
m = matfile(filename,'Writable',isWritable)

m = matfile(filename) 创建 MAT 文件对象 m,该对象连接到名为 filename 的 MAT 文件。该对象允许您直接访问和更改 MAT 文件中的变量,而不必将变量加载到内存中。
matfile 函数提供的部分加载和保存所需的内存比 load 和 save 命令少,因为后两者始终处理全部变量。

m = matfile(filename,'Writable',isWritable) 启用或禁用对文件的写入访问权限。

加载变量

filename = 'guiData.mat';
m = matfile(filename);
a=m.a
b=m.b
c=m.c

>>
a =
    'a'

b =
     2

c =
     3

将整个变量保存至现有 MAT 文件

filename = 'guiData.mat';
m = matfile(filename,'Writable',true);%启用对文件的写入访问权限。
m.x=[1 2];%添加新变量
whos('-file',filename)%查看文件内容

>> 
  Name      Size            Bytes  Class     Attributes

  a         1x1                 2  char                
  b         1x1                 8  double              
  c         1x1                 8  double              
  x         1x2                16  double

修改mat文件中已经存在变量的值需设置写入访问权限。