2021-01-08

本文介绍了如何使用MATLAB的save函数将工作空间中的变量保存到MAT或ASCII文件中,包括指定变量、文件格式、版本选择以及压缩选项。此外,还展示了如何通过不同的参数组合进行文件的追加写入和不同版本间的兼容性。
摘要由CSDN通过智能技术生成

save

Save workspace variables to file

collapse all in page

Syntax

save(filename)

save(filename,variables)

save(filename,variables,fmt)

save(filename,variables,version)

save(filename,variables,version,'-nocompression')

save(filename,variables,'-append')

save(filename,variables,'-append','-nocompression')

save filename

Description

example

save(filename) saves all variables from the current workspace in a MATLAB® formatted binary file (MAT-file) called filename. If filename exists, save overwrites the file.

example

save(filename,variables) saves only the variables or fields of a structure array specified by variables.

example

save(filename,variables,fmt) saves in the file format specified by fmt. The variables argument is optional. If you do not specify variables, the save function saves all variables in the workspace.

example

save(filename,variables,version) saves to the MAT-file version specified by version. The variables argument is optional.

example

save(filename,variables,version,'-nocompression') saves the variables to the MAT-file without compression. The '-nocompression' flag only supports MAT-file Version 7 (default) and Version 7.3. Therefore, you must specify version as '-v7' or '-v7.3'. The variables argument is optional.

example

save(filename,variables,'-append') adds new variables to an existing file. If a variable already exists in a MAT-file, then save overwrites it with the value in the workspace.

For ASCII files, '-append' adds data to the end of the file.

To append to a Version 6 MAT-file, you must also include '-v6' as an input argument.

example

save(filename,variables,'-append','-nocompression') adds new variables to an existing file without compression. The existing file must be a MAT-file Version 7 (default) or 7.3.

example

save filename is the command form of the syntax. Command form requires fewer special characters. You do not need to type parentheses or enclose the input in single or double quotes. Separate inputs with spaces instead of commas.

For example, to save a file named test.mat, these statements are equivalent:

save test.mat      % command form
save('test.mat')   % function form

 

You can include any of the inputs described in previous syntaxes. For example, to save the variable named X:

save test.mat X       % command form
save('test.mat','X')  % function form

 

Do not use command form when any of the inputs, such as filename, are variables or strings.

Examples

collapse all

Save All Workspace Variables to MAT-File

Save all variables from the workspace in a binary MAT-file, test.mat. If filename is a variable, use function syntax.

filename = 'test.mat';
save(filename)

Otherwise, you also can use command syntax.

save test.mat

Remove the variables from the workspace, and then retrieve the data with the load function.

clear
load('test.mat')

Save Specific Variables to MAT-File

Try This Example

View MATLAB Command

Create and save two variables, p and q, to a file called pqfile.mat.

p = rand(1,10);
q = ones(10);
save('pqfile.mat','p','q')

MATLAB® saves the variables to the file, pqfile.mat, in the current folder.

You also can use command syntax to save the variables, p and q.

save pqfile.mat p q

Save Data to ASCII File

Create two variables, save them to an ASCII file, and then view the contents of the file.

p = rand(1,10);
q = ones(10);
save('pqfile.txt','p','q','-ascii')
type('pqfile.txt')

The type function displays the contents of the file.

Alternatively, use command syntax for the save operation.

save pqfile.txt p q -ascii

Save Structure Fields as Individual Variables

Try This Example

View MATLAB Command

Create a structure, s1, that contains three fields, ab, and c.

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

Save the fields of structure s1 as individual variables in a file called newstruct.mat.

save('newstruct.mat','-struct','s1');

Check the contents of the file using the whos function.

disp('Contents of newstruct.mat:')
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                

Save Variables to Version 7.3 MAT-File

Create two variables and save them to a Version 7.3 MAT-file called example.mat.

A = rand(5);
B = magic(10);
save('example.mat','A','B','-v7.3')

You also can use command syntax for the save operation.

save example.mat A B -v7.3

Save Variables to MAT-File Without Compression

Try This Example

View MATLAB Command

Create two variables and save them, without compression, to a Version 7 or 7.3 MAT-file called myFile.mat.

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

Alternatively, use the command syntax for the save operation.

save myFile.mat A B -v7.3 -nocompression

The '-nocompression' flag facilitates a faster save for those variables that are larger than 2 GB or those that do not benefit from compression.

Append Variable to MAT-File

Save two variables to a MAT-file. Then, append a third variable to the same file.

p = rand(1,10);
q = ones(10);
save('test.mat','p','q')

View the contents of the MAT-file.

whos('-file','test.mat')
  Name       Size            Bytes  Class     Attributes

  p          1x10               80  double              
  q         10x10              800  double              

Create a new variable, a, and append it to the MAT-file.

a = 50;
save('test.mat','a','-append')

View the contents of the MAT-file.

whos('-file','test.mat')
  Name       Size            Bytes  Class     Attributes

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

The variable, a, is appended to test.mat, without overwriting the previous variables, p and q.

 

Note

To append to a Version 6 MAT-file, specify both '-v6' and '-append'. For example, to save variable a to the file, test.mat, call:

save('test.mat','a','-v6','-append')

 

 

Append Variable to MAT-File Without Compression

Try This Example

View MATLAB Command

Save two variables to a MAT-file. Then, append a third variable, without compression, to the same file.

Create two variables A and B and save them to a MAT-file Version 7 or 7.3. By default, the save function compresses variables A and B before saving them to myFile.mat.

A = rand(5);
B = magic(10);
save('myFile.mat','A','B','-v7.3')

View the contents of the MAT-file.

whos('-file','myFile.mat')
  Name       Size            Bytes  Class     Attributes

  A          5x5               200  double              
  B         10x10              800  double              

Create a new variable C and append it, without compression, to myFile.mat.

C = 5;
save('myFile.mat','C','-append','-nocompression')

View the contents of the MAT-file.

whos('-file','myFile.mat')
  Name       Size            Bytes  Class     Attributes

  A          5x5               200  double              
  B         10x10              800  double              
  C          1x1                 8  double              

Input Arguments

collapse all

filename — Name of file
'matlab.mat' (default) | character vector | string scalar

Name of file, specified as a character vector or string scalar. If you do not specify filename, the save function saves to a file named matlab.mat.

If filename has no extension (that is, no period followed by text), and the value of format is not specified, then MATLAB appends .mat. If filename does not include a full path, MATLAB saves to the current folder. You must have permission to write to the file.

When using the command form of save, it is unnecessary to enclose the input in single quotes. However, if filename contains a space, you must enclose the argument in single quotes. For example, save 'filename withspace.mat'.

Note

Do not use command form when filename is a string.

Example: 'myFile.mat'

variables — Names of variables to save
character vector | string scalar

Names of variables to save, specified as character vectors or string scalars. When using the command form of save, you do not need to enclose the input in single quotes.

Note

Do not use command form when variables is a string.

variables can be in one of the following forms.

Form of variables InputVariables to Save
var1,...,varNSave the listed variables, specified as individual character vectors or strings.
Use the '*' wildcard to match patterns. For example, save('filename.mat','A*') saves all variables in the file that start with A.
'-regexp',expr1,...,exprNSave only the variables whose names match the regular expressions, specified as character vectors or strings. For example, save('filename.mat','-regexp','^Mon','^Tues') saves only the variables in the file whose names begin with Mon or Tues.
'-struct',structNameStore the fields of the scalar structure specified by structName as individual variables in the file. For example, save('filename.mat','-struct','S') saves the scalar structure, S.
'-struct',structName,field1,...,fieldNStore the specified fields of the specified scalar structure as individual variables in the file. For example, save('filename.mat','-struct','S','a','b') saves the fields S.a and S.b.
'-struct',structName,'-regexp',expr1,...,exprNStore only the fields whose names match the regular expressions, specified as character vectors or strings.

fmt — File format
'-mat' (default) | '-ascii' | '-ascii','-tabs' | '-ascii','-double' | '-ascii','-double','-tabs'

File format, specified as one of the following. When using the command form of save, you do not need to enclose the input in single or double quotes, for example, save myFile.txt -ascii -tabs.

Value of fmtFile Format
'-mat'

Binary MAT-file format.

'-ascii'

Text format with 8 digits of precision.

'-ascii','-tabs'

Tab-delimited text format with 8 digits of precision.

'-ascii','-double'

Text format with 16 digits of precision.

'-ascii','-double','-tabs'

Tab-delimited text format with 16 digits of precision.

For MAT-files, data saved on one machine and loaded on another machine retains as much accuracy and range as the different machine floating-point formats allow.

Use one of the text formats to save MATLAB numeric values to text files. In this case:

  • Each variable must be a two-dimensional double array.

  • The output includes only the real component of complex numbers.

  • MATLAB writes data from each variable sequentially to the file. If you plan to use the load function to read the file, all variables must have the same number of columns. The load function creates a single variable from the file.

If you specify a text format and any variable is a two-dimensional character array, then MATLAB translates characters to their corresponding internal ASCII codes. For example, 'abc' appears in a text file as:

  9.7000000e+001  9.8000000e+001  9.9000000e+001

 

Data Types: char | string

version — MAT-file version
'-v7' (default) | '-v7.3' | '-v6' | '-v4'

MAT-file version, specified as one of the following. When using the command form of save, you do not need to enclose the input in single or double quotes.

Value of versionLoads in MATLAB VersionsSupported FeaturesCompressionMaximum Size of Each Variable
'-v7.3'7.3 (R2006b) or later

Saving and loading parts of variables, and all Version 7 features. Version 7.3 also supports saving variables without compression using the '-nocompression' option.

Yes (default)≥ 2 GB on 64-bit computers
'-v7'7.0 (R14) or later

Unicode® character encoding, which enables file sharing between systems that use different default character encoding schemes, and all Version 6 features. Version 7 also supports saving variables without compression using the '-nocompression' option.

Yes (default)2^31 bytes per variable
'-v6'5 (R8) or later

N-dimensional arrays, cell arrays, structure arrays, variable names longer than 19 characters, and all Version 4 features.

No2^31 bytes per variable
'-v4'All

Two-dimensional double, character, and sparse arrays.

No100,000,000 elements per array, and 2^31 bytes per variable

If any data items require features that the specified version does not support, MATLAB does not save those items and issues a warning. You cannot specify a version later than your current version of MATLAB software.

Note

Version 7.3 MAT-files use an HDF5 based format that requires some overhead storage to describe the contents of the file. For cell arrays, structure arrays, or other containers that can store heterogeneous data types, Version 7.3 MAT-files are sometimes larger than Version 7 MAT-files.

To view or set the default version for MAT-files, go to the Home tab and in the Environment section, click  Preferences. Select MATLAB > General > MAT-Files and then choose a MAT-file save format option.

Data Types: char | string

Tips

  • For more flexibility in creating ASCII files, use dlmwrite or fprintf.

  • Saving graphics objects with the save function can result in a large file since the file contains all the information required to regenerate the object.

  • Avoid saving figures with the save function. Use the savefig function instead. Using save to save a figure in R2014b or later makes MAT-file inaccessible in earlier versions of MATLAB. If you use save to save a figure, then the function displays a warning message. Delete any figures before using save. Keep in mind that the figures might not be directly in your workspace. For example, they might be stored in a structure or in the workspace of a callback function.

See Also

clear | hgsave | load | matfile | regexp | saveas | whos

Topics

Introduced before R2006a

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值