如何将MATLAB受试者数据批量导出至Excel工作簿的不同工作表?
将单受试者多组数据写入同一Excel工作簿的不同工作表
单个受试者处理代码
通过循环遍历变量名,把每个变量写入对应名称的工作表,生成一个包含所有数据的Excel文件:
% 加载受试者数据 data = load('subject_1.mat'); varNames = fieldnames(data); excelFile = 'subject_1_all_data.xlsx'; % 循环写入每个变量到独立工作表 for idx = 1:length(varNames) currentVar = varNames{idx}; writematrix(data.(currentVar), excelFile, 'Sheet', currentVar); % 若使用旧版MATLAB,替换为:xlswrite(excelFile, data.(currentVar), currentVar); end
- 每个变量会以自身名称作为工作表名,比如
speed对应工作表speed,无需手动命名 - 如果变量是字符串/元胞数组类型,将
writematrix替换为writecell即可
批量处理100份受试者数据
通过外层循环遍历受试者编号,自动处理所有数据,避免重复操作:
% 遍历100个受试者 for subjID = 1:100 % 构造.mat和Excel文件名 matFilePath = sprintf('subject_%d.mat', subjID); excelFilePath = sprintf('subject_%d_all_data.xlsx', subjID); % 加载数据并获取变量名 data = load(matFilePath); varNames = fieldnames(data); % 写入当前受试者的所有变量到对应工作表 for idx = 1:length(varNames) currentVar = varNames{idx}; writematrix(data.(currentVar), excelFilePath, 'Sheet', currentVar); % 旧版MATLAB替换为:xlswrite(excelFilePath, data.(currentVar), currentVar); end end
- 每个受试者对应一个独立Excel文件,文件命名为
subject_N_all_data.xlsx(N为受试者编号) - 自动读取每个.mat文件的所有变量,无需手动修改变量名或文件名
注意事项
- 确保目标Excel文件未被打开,否则会写入失败
- 若工作表名存在特殊字符(如空格、标点),可对
currentVar做简单处理,比如currentVar = strrep(currentVar, ' ', '_');替换空格为下划线
内容的提问来源于stack exchange,提问作者user731995
相关产品推荐
相关产品推荐

