菜鸟科技网

MATLAB保存矩阵命令有哪些?

核心命令:save

save 是最通用、最核心的命令,用于将工作区中的变量保存到 .mat 文件中。.mat 是 MATLAB 的标准二进制数据文件格式。

MATLAB保存矩阵命令有哪些?-图1
(图片来源网络,侵删)

保存单个矩阵

这是最基本的情况。

% 1. 创建一个示例矩阵
A = magic(3); % 创建一个 3x3 的魔方阵
% 2. 保存矩阵 A 到文件 'my_matrix.mat'
%    文件会保存在 MATLAB 的当前工作目录下
save('my_matrix.mat', 'A');

执行后,你会在当前文件夹看到一个名为 my_matrix.mat 的文件,这个文件包含了变量 A 的所有信息(值、数据类型、维度等)。

保存多个矩阵

你可以一次保存多个变量,只需将它们的变量名作为字符串放在后面。

% 创建两个矩阵
A = rand(4, 2); % 4x2 随机矩阵
B = [1 2 3; 4 5 6]; % 2x3 矩阵
% 将 A 和 B 保存到同一个文件 'multi_data.mat'
save('multi_data.mat', 'A', 'B');

保存所有工作区变量

如果你想快速保存当前工作区中所有的变量,可以使用 save 命令而不指定变量名。

MATLAB保存矩阵命令有哪些?-图2
(图片来源网络,侵删)
% 假设工作区中有 A, B, C, D 等多个变量
% 保存所有变量到文件 'all_workspace_vars.mat'
save('all_workspace_vars.mat');

使用通配符 选择变量

你可以使用通配符来选择符合特定模式的变量。

% 假设工作区中有 Data1, Data2, Result1, Temp 等变量
% 只保存所有以 'Data' 开头的变量
save('data_files.mat', 'Data*');

save 命令的常用选项 (Flags)

save 命令支持多种选项,通过在文件名后添加 -flag 的形式来使用。

-ascii: 保存为可读的文本文件

当你需要将数据导出供其他程序(如 Excel, Python, C++)读取时,这个选项非常有用,它保存的是纯文本,没有 MATLAB 的元数据。

注意-ascii 会保存为 8 位 ASCII 文本,精度有限,对于高精度数据,推荐使用 -ascii -double

MATLAB保存矩阵命令有哪些?-图3
(图片来源网络,侵删)
A = pi * rand(3, 4);
% 保存为 8 位 ASCII 文本
save('data_ascii.txt', 'A', '-ascii');
% 保存为双精度 ASCII 文本(推荐,精度更高)
save('data_double.txt', 'A', '-ascii', '-double');

执行后,你会得到一个 data_double.txt 文件,用记事本打开可以看到类似这样的内容:

   2.83473452342342   1.23456789012346   0.98765432109877   3.14159265358979
   0.12345678901235   2.71828182845905   1.41421356237310   0.70710678118655
   1.61803398874989   0.50000000000000   2.23606797749979   1.73205080756888

-mat: 强制保存为 .mat 文件

当你想将文件保存为非 .mat 扩展名(.data)但又希望它仍然是 MATLAB 的二进制格式时,可以使用这个选项。

A = magic(5);
save('my_data_file.data', 'A', '-mat');

-v7.3: 保存为大型 .mat 文件 (HDF5 格式)

对于非常大的矩阵(通常超过 2GB),标准的 .mat 格式可能会遇到问题。-v7.3 选项将文件保存为基于 HDF5 的格式,支持:

  • 单个文件超过 2GB。
  • 保存更多种类的数据类型(如大数据集、元数据、复杂结构体等)。
  • 可以被其他 HDF5 兼容工具(如 Python 的 h5py 库)读取。
% 创建一个非常大的矩阵 (约 1.5 GB)
large_matrix = rand(50000, 'single'); % single 类型以减小文件大小
% 使用 -v7.3 选项保存
save('large_file.mat', 'large_matrix', '-v7.3');

其他保存方法(针对特定需求)

保存为 CSV 文件 (供 Excel 等软件使用)

CSV 是一种非常通用的表格数据格式,虽然可以使用 save -ascii,但 writematrixwritetable 是更现代、更推荐的方法。

使用 writematrix (推荐)

A = [1, 2, 3; 4, 5, 6; 7, 8, 9];
% 将矩阵 A 保存为 'matrix.csv'
% 默认会使用逗号作为分隔符,并包含不带引号的文本头
writematrix(A, 'matrix.csv');

使用 csvwrite (旧版,不推荐)

% 功能与 writematrix 类似,但语法更旧
csvwrite('matrix_old.csv', A);

保存为文本文件 (自定义格式)

如果需要控制输出格式(指定小数位数、分隔符等),可以使用 fprintf

A = pi * rand(3, 2);
% 打开一个文件用于写入,'w' 表示写入模式(会覆盖旧文件)
fileID = fopen('my_data_formatted.txt', 'w');
% 检查文件是否成功打开
if fileID == -1
    error('无法打开文件');
end
% 写入文件头
fprintf(fileID, '这是我的自定义数据文件\n');
fprintf(fileID, '列1\t列2\n'); % \t 是制表符
% 循环写入矩阵数据,%.4f 表示保留4位小数
for i = 1:size(A, 1)
    fprintf(fileID, '%.4f\t%.4f\n', A(i, :));
end
% 关闭文件
fclose(fileID);
disp('数据已成功写入 my_data_formatted.txt');

输出文件 my_data_formatted.txt 内容如下:

这是我的自定义数据文件
列1  列2
2.1416  0.1416
0.7183  1.4142
1.6180  0.5000

如何读取保存的文件?

保存方法 读取命令 说明
save (.mat) load('my_matrix.mat') 读取 .mat 文件中的所有变量到工作区。
[A, B] = load('multi_data.mat', 'A', 'B'); 只读取指定的变量。
save -ascii (文本) A = load('data_double.txt'); load 命令可以自动解析数字格式的文本文件。
writematrix (CSV) A = readmatrix('matrix.csv'); 读取 CSV 或文本文件中的数值数据到矩阵。
fprintf (自定义文本) A = load('my_data_formatted.txt'); 如果是纯数字,load 仍然可用,如果包含非数字文本,需要用 textscan 等更高级的函数。

总结与推荐

你的目标 推荐命令 优点
在 MATLAB 中暂存或分享数据 save('file.mat', 'var1', 'var2'); 保留所有数据信息,文件小,加载快。
供 MATLAB 外部程序(如 Excel)使用 writematrix(A, 'file.csv'); 通用格式,易于在其他软件中打开。
保存非常大的数据集 (>2GB) save('large_file.mat', 'A', '-v7.3'); 突破文件大小限制,兼容性好。
需要精确控制输出格式 fprintf 灵活性最高,可自定义分隔符、精度等。

对于绝大多数情况,savewritematrix 是你最需要掌握的两个命令。

分享:
扫描分享到社交APP
上一篇
下一篇