Matlab 将工作区变量保存到文件中(save)

语法

matlab 复制代码
1、save(filename)
2、save(filename,variables)
3、save(filename,variables,fmt)
4、save(filename,variables,version)
5、save(filename,variables,version,'-nocompression')
6、save(filename,variables,'-append')
7、save(filename,variables,'-append','-nocompression')

描述

matlab 复制代码
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' 标志仅支持 MAT 文件版本 7(默认值)和版本 7.3。因此,您必须将 version 指定为 '-v7' 或 '-v7.3'。variables 参数为可选参数。
save(filename,variables,'-append') 将新变量添加到一个现有文件中。如果 MAT 文件中已经存在变量,则 save 会使用工作区中的值覆盖它。
对于 ASCII 文件,'-append' 会将数据添加到文件末尾。
要追加到版本 6 的 MAT 文件,您还必须包括 '-v6' 作为输入参数。
save(filename,variables,'-append','-nocompression') 将新变量添加到一个现有文件中,而不进行压缩。现有文件必须为 MAT 文件版本 7(默认值)或 7.3。
save filename 是命令形式的语法。命令形式需要的特殊字符较少。您无需键入括号或者将输入括在单引号或双引号内。使用空格(而不是逗号)分隔各个输入项。
例如,要保存名为 test.mat 的文件,这些语句是等效的:
	save test.mat      % command form
	save('test.mat')   % function form
您可以包括先前语法中介绍的任何输入。例如,要保存名为 X 的变量:
	save test.mat X       % command form
	save('test.mat','X')  % function form
当有任何输入(例如 filename)为变量或字符串时,请不要使用命令格式。

示例

1、将所有工作区变量保存到 MAT 文件

将工作区中的所有变量保存在二进制 MAT 文件 test.mat 中。如果 filename 为变量,则使用函数语法。

matlab 复制代码
filename = 'test.mat';
save(filename)    

clear
load('test.mat')  % 通过 load 函数获取数据

2、将特定变量保存到 MAT 文件

创建两个变量 p 和 q 并将其保存到名为 pqfile.mat 的文件中。

matlab 复制代码
p = rand(1,10);
q = ones(10);
save('pqfile.mat','p','q')

3、将数据保存到 ASCII 文件

创建两个变量,将其保存到 ASCII 文件中,然后查看文件内容。

matlab 复制代码
p = rand(1,10);
q = ones(10);
save('pqfile.txt','p','q','-ascii')
type('pqfile.txt')

4、将结构体字段保存为单个变量

创建一个包含三个字段 a、b 和 c 的结构体 s1。

matlab 复制代码
s1.a = 12.7;
s1.b = {'abc',[4 5; 6 7]};
s1.c = 'Hello!';

将结构体 s1 的字段保存为名为 newstruct.mat 的文件中的单个变量。

matlab 复制代码
save('newstruct.mat','-struct','s1');

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

matlab 复制代码
disp('Contents of newstruct.mat:')
whos('-file','newstruct.mat')
>>> 
Name      Size      Bytes      Class      Attributes

 a        1x1           8      double              
 b        1x2         246      cell                
 c        1x6          12      char 

5、将变量保存到 7.3 版的 MAT 文件中

创建两个变量并将其保存到名为 example.mat 的 7.3 版的 MAT 文件中。

matlab 复制代码
A = rand(5);
B = magic(10);
save('example.mat','A','B','-v7.3')

6、将变量保存到 MAT 文件而不压缩

创建两个变量并将其保存到名为 myFile.mat 的 7 或 7.3 版的 MAT 文件中,而不进行压缩。

matlab 复制代码
A = rand(5);
B = magic(10);
save('myFile.mat','A','B','-v7.3','-nocompression')

'-nocompression' 标志有助于更快地保存那些大于 2 GB 或者不会从压缩中受益的变量。

7、将变量追加到 MAT 文件中

将两个变量保存到 MAT 文件中。然后,将第三个变量追加到同一文件中。

matlab 复制代码
p = rand(1,10);
q = ones(10);
save('test.mat','p','q')

查看 MAT 文件的内容。

matlab 复制代码
whos('-file','test.mat')
>>> 
Name       Size       Bytes       Class       Attributes

p          1x10          80       double              
q         10x10         800       double              

创建一个新变量 a,并将其追加到 MAT 文件中。

matlab 复制代码
a = 50;
save('test.mat','a','-append')
whos('-file','test.mat')
>>> 
Name       Size       Bytes       Class       Attributes

a          1x1            8       double              
p          1x10          80       double              
q         10x10         800       double

8、将变量追加到 MAT 文件中而不进行压缩

将两个变量保存到 MAT 文件中。然后,将第三个变量(不进行压缩)追加到同一文件中。

创建两个变量 A 和 B,然后将它们保存到 7 或 7.3 版的 MAT 文件中。默认情况下,save 函数会压缩变量 A 和 B 并将其保存到 myFile.mat 中。

matlab 复制代码
A = rand(5);
B = magic(10);
save('myFile.mat','A','B','-v7.3')
whos('-file','myFile.mat')
>>>
Name       Size       Bytes       Class       Attributes

A          5x5          200       double              
B         10x10         800       double              

创建新变量 C,并将其附加到 myFile.mat,而不进行压缩。

matlab 复制代码
C = 5;
save('myFile.mat','C','-append','-nocompression')
whos('-file','myFile.mat')
>>>
Name       Size       Bytes       Class       Attributes

A          5x5          200       double              
B         10x10         800       double              
C          1x1            8       double              
相关推荐
wearegogog1237 小时前
基于 MATLAB 的卡尔曼滤波器实现,用于消除噪声并估算信号
前端·算法·matlab
韩师学子--小倪7 小时前
fastjson与gson的toString差异
java·json
Drawing stars7 小时前
JAVA后端 前端 大模型应用 学习路线
java·前端·学习
崇山峻岭之间7 小时前
Matlab学习记录33
开发语言·学习·matlab
品克缤8 小时前
Element UI MessageBox 增加第三个按钮(DOM Hack 方案)
前端·javascript·vue.js
Evand J8 小时前
【2026课题推荐】DOA定位——MUSIC算法进行多传感器协同目标定位。附MATLAB例程运行结果
开发语言·算法·matlab
nbsaas-boot8 小时前
SQL Server 存储过程开发规范(公司内部模板)
java·服务器·数据库
小二·8 小时前
Python Web 开发进阶实战:性能压测与调优 —— Locust + Prometheus + Grafana 构建高并发可观测系统
前端·python·prometheus
小沐°8 小时前
vue-设置不同环境的打包和运行
前端·javascript·vue.js
行百里er8 小时前
用 ThreadLocal + Deque 打造一个“线程专属的调用栈” —— Spring Insight 的上下文管理术
java·后端·架构