MATLAB - 数据输出
MATLAB - 数据输出与导出
Section titled “MATLAB - 数据输出与导出”从 MATLAB 导出数据意味着将工作区中的变量写入文件。这对于保存结果、与其他应用程序共享数据或创建报告至关重要。现代 MATLAB 提供了一套高级函数,使数据导出变得简单而健壮。
现代高级 I/O 函数(推荐)
Section titled “现代高级 I/O 函数(推荐)”对于大多数常见的数据导出任务,你应该使用 write___ 系列函数。这些函数功能强大、灵活,并且已经取代了像 dlmwrite 这样的旧函数。
writematrix:将数值矩阵写入文本文件。writecell:将单元格数组(cell array)写入文本文件。writetable:将table(表格)写入文件。对于混合类型表格数据(例如,包含数字、文本和日期的列),这是最强大的选项,并支持.csv和.xlsx等格式。
示例:使用 writematrix
Section titled “示例:使用 writematrix”让我们创建一个数值矩阵并将其保存为逗号分隔值(CSV)文件。
% 创建一个示例数值矩阵num_matrix = [1.5, 2.3, 8.1; 4.0, 5.2, 6.9];
% 将矩阵导出到 CSV 文件output_filename = 'matrix_data.csv';writematrix(num_matrix, output_filename);
% 通过显示文件内容进行验证fprintf('File ''%s'' created. Content:\n', output_filename);type(output_filename);输出文件 matrix_data.csv 将包含:
1.5,2.3,8.14,5.2,6.9示例:使用 writetable
Section titled “示例:使用 writetable”table 数据类型非常适合处理带有不同类型命名列的数据。writetable 会自动在输出文件中包含列头。
% 创建一个包含混合数据类型的表格LastName = ["Smith"; "Jones"; "Williams"];Age = [38; 29; 45];BloodPressure = [124, 82; 115, 78; 130, 88];
data_table = table(LastName, Age, BloodPressure);
% 将表格导出到使用制表符作为分隔符的文本文件output_filename = 'patient_data.txt';writetable(data_table, output_filename, 'Delimiter', '\t');
% 通过显示文件内容进行验证fprintf('\nFile ''%s'' created. Content:\n', output_filename);type(output_filename);输出文件 patient_data.txt 将被整齐格式化为:
LastName Age BloodPressure_1 BloodPressure_2"Smith" 38 124 82"Jones" 29 115 78"Williams" 45 130 88用于自定义格式的低级文件 I/O
Section titled “用于自定义格式的低级文件 I/O”当你需要完全控制文件格式时(例如,创建结构化日志文件或自定义文本格式),你可以使用低级 I/O 函数:fopen、fprintf 和 fclose。
示例:创建日志表格
Section titled “示例:创建日志表格”此示例在一个文本文件中创建了一个两列表格,展示了健壮的错误处理和文件管理。
% 准备数据x = 0:10:100;y_data = [x; log(x)];output_filename = 'log_table.txt';
% 打开文件用于写入 ('w')。最佳实践是检查文件 ID。fid = fopen(output_filename, 'w');if fid == -1 error('Cannot open file: %s', output_filename);end
% 使用 try-catch 块以确保即使发生错误也能关闭文件try % 将文件头写入文件 fprintf(fid, '--- Logarithm Table ---\n'); fprintf(fid, '%-10s | %-15s\n', 'Value', 'Log(Value)'); fprintf(fid, '---------------------------\n');
% 在循环中写入数据以进行精确格式化 fprintf(fid, '%-10.2f | %-15.4f\n', y_data);
fprintf('\nFile ''%s'' created successfully.\n', output_filename);catch ME % 如果写入过程中发生错误,关闭文件并重新抛出错误 fclose(fid); rethrow(ME);end
% 关闭文件fclose(fid);
% 显示创建的文件type(output_filename);生成的文件 log_table.txt 将如下所示:
--- Logarithm Table ---Value | Log(Value)---------------------------0.00 | -Inf10.00 | 2.302620.00 | 2.995730.00 | 3.401240.00 | 3.688950.00 | 3.912060.00 | 4.094370.00 | 4.248580.00 | 4.382090.00 | 4.4998100.00 | 4.6052其他导出方法
Section titled “其他导出方法”diary:创建 MATLAB 命令行窗口会话的日志。对于简单的记录非常有用。使用diary on开始,diary off停止。save命令:主要用于将工作区变量保存到.mat文件(save('my_data.mat')),这是一种二进制格式,非常适合之后重新加载到 MATLAB 中。-ascii选项被认为是旧版功能,并且不如writematrix灵活。
关于废弃函数的说明:函数 dlmwrite 不再推荐使用。请使用 writematrix,因为它具有改进的性能和功能。