数据导入导出 #
一、MAT文件 #
1.1 保存变量 #
matlab
% 创建变量
x = 1:10;
y = rand(5, 5);
z = 'Hello';
% 保存所有变量
save('mydata.mat');
% 保存指定变量
save('mydata.mat', 'x', 'y');
% 追加变量
save('mydata.mat', 'z', '-append');
% 保存为文本格式
save('mydata.txt', 'x', '-ascii');
% 保存为v7.3格式(支持大文件)
save('mydata.mat', '-v7.3');
1.2 加载变量 #
matlab
% 加载所有变量
load('mydata.mat');
% 加载指定变量
load('mydata.mat', 'x', 'y');
% 加载到结构体
data = load('mydata.mat');
x = data.x;
y = data.y;
二、CSV文件 #
2.1 读取CSV #
matlab
% readmatrix(推荐)
data = readmatrix('data.csv');
% readtable(保留表头)
T = readtable('data.csv');
% readcell(混合类型)
C = readcell('data.csv');
% csvread(旧方法,不推荐)
data = csvread('data.csv');
2.2 写入CSV #
matlab
% writematrix(推荐)
data = rand(5, 3);
writematrix(data, 'output.csv');
% writetable
T = table(rand(5,1), rand(5,1), 'VariableNames', {'x', 'y'});
writetable(T, 'output.csv');
% csvwrite(旧方法,不推荐)
csvwrite('output.csv', data);
2.3 带选项读写 #
matlab
% 读取选项
opts = detectImportOptions('data.csv');
opts.VariableTypes = {'double', 'double', 'string'};
data = readtable('data.csv', opts);
% 写入选项
writematrix(data, 'output.csv', 'Delimiter', ',');
writematrix(data, 'output.tsv', 'Delimiter', '\t');
三、Excel文件 #
3.1 读取Excel #
matlab
% readmatrix
data = readmatrix('data.xlsx');
% readtable
T = readtable('data.xlsx');
% readcell
C = readcell('data.xlsx');
% 指定工作表
data = readmatrix('data.xlsx', 'Sheet', 'Sheet2');
% 指定范围
data = readmatrix('data.xlsx', 'Range', 'A1:C10');
% xlsread(旧方法)
[num, txt, raw] = xlsread('data.xlsx');
3.2 写入Excel #
matlab
% writematrix
data = rand(5, 3);
writematrix(data, 'output.xlsx');
% writetable
T = table(rand(5,1), rand(5,1), 'VariableNames', {'x', 'y'});
writetable(T, 'output.xlsx');
% 指定工作表
writematrix(data, 'output.xlsx', 'Sheet', 'Results');
% 追加数据
writematrix(data, 'output.xlsx', 'Sheet', 1, 'Range', 'A7');
% xlswrite(旧方法)
xlswrite('output.xlsx', data);
四、文本文件 #
4.1 读取文本 #
matlab
% fileread(读取全部内容)
content = fileread('data.txt');
% readlines(逐行读取)
lines = readlines('data.txt');
% fopen + fgetl(逐行处理)
fid = fopen('data.txt', 'r');
while ~feof(fid)
line = fgetl(fid);
% 处理每一行
end
fclose(fid);
% textscan(格式化读取)
fid = fopen('data.txt', 'r');
data = textscan(fid, '%f %f %s');
fclose(fid);
x = data{1};
y = data{2};
names = data{3};
4.2 写入文本 #
matlab
% fprintf
fid = fopen('output.txt', 'w');
fprintf(fid, 'Hello World\n');
fprintf(fid, '数值: %.2f\n', 3.14159);
fclose(fid);
% writelines
lines = ['第一行'; '第二行'; '第三行'];
writelines(lines, 'output.txt');
% writematrix
data = rand(5, 3);
writematrix(data, 'output.txt', 'Delimiter', '\t');
4.3 文件模式 #
matlab
% 'r' - 只读
% 'w' - 写入(覆盖)
% 'a' - 追加
% 'r+' - 读写
% 'w+' - 读写(覆盖)
fid = fopen('data.txt', 'a'); % 追加模式
fprintf(fid, '新内容\n');
fclose(fid);
五、JSON文件 #
5.1 读取JSON #
matlab
% jsondecode
json_str = '{"name": "张三", "age": 25}';
data = jsondecode(json_str);
% 从文件读取
json_str = fileread('data.json');
data = jsondecode(json_str);
5.2 写入JSON #
matlab
% jsonencode
data.name = '张三';
data.age = 25;
data.scores = [85 90 78];
json_str = jsonencode(data, 'PrettyPrint', true);
% 写入文件
fid = fopen('output.json', 'w');
fprintf(fid, '%s', json_str);
fclose(fid);
六、图像文件 #
6.1 读取图像 #
matlab
% imread
img = imread('image.jpg');
img = imread('image.png');
img = imread('image.bmp');
% 获取图像信息
info = imfinfo('image.jpg');
6.2 写入图像 #
matlab
% 创建图像
img = rand(100, 100, 3);
% 保存图像
imwrite(img, 'output.jpg');
imwrite(img, 'output.png');
imwrite(img, 'output.jpg', 'Quality', 95); % JPEG质量
七、二进制文件 #
7.1 读取二进制 #
matlab
fid = fopen('data.bin', 'rb');
% 读取整数
data = fread(fid, [100, 1], 'int32');
% 读取浮点数
data = fread(fid, [100, 1], 'double');
% 读取到文件末尾
data = fread(fid, inf, 'double');
fclose(fid);
7.2 写入二进制 #
matlab
data = rand(100, 1);
fid = fopen('output.bin', 'wb');
fwrite(fid, data, 'double');
fclose(fid);
八、实用示例 #
8.1 批量读取文件 #
matlab
function data = read_all_csv(folder_path)
% READ_ALL_CSV 批量读取CSV文件
files = dir(fullfile(folder_path, '*.csv'));
data = cell(length(files), 1);
for i = 1:length(files)
filename = fullfile(folder_path, files(i).name);
data{i} = readmatrix(filename);
fprintf('读取: %s\n', files(i).name);
end
end
8.2 导出分析结果 #
matlab
function export_results(filename, results)
% EXPORT_RESULTS 导出分析结果到Excel
% 创建工作簿
writematrix(results.data, filename, 'Sheet', '数据');
% 添加统计信息
stats = [results.mean; results.std; results.min; results.max];
writematrix(stats, filename, 'Sheet', '统计');
% 添加说明
info = {'均值', num2str(results.mean);
'标准差', num2str(results.std);
'最小值', num2str(results.min);
'最大值', num2str(results.max)};
writematrix(info, filename, 'Sheet', '说明');
fprintf('结果已保存到: %s\n', filename);
end
九、总结 #
本章学习了:
- MAT文件:save、load
- CSV文件:readmatrix、writematrix
- Excel文件:readmatrix、writematrix
- 文本文件:fopen、fprintf、textscan
- JSON文件:jsondecode、jsonencode
- 图像文件:imread、imwrite
- 二进制文件:fread、fwrite
下一章将学习数据预处理。
最后更新:2026-03-27