You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MATLAB中如何将循环内fprintf输出的结果导出至Excel?

把MATLAB输出导出到Excel的两种实用方法

嘿,我来帮你搞定这个问题!其实不用纠结是用xlswrite还是fopen——两种方法都能实现,不过我更推荐先把数据整理成结构化格式再导出,比直接捕获fprintf的输出要高效得多。下面给你具体的解决方案:

方法一:用writetable(MATLAB官方推荐)

这是最简单的方式,适合处理表格类数据。你可以先把名字、分数和结果整合成一个表格,然后直接写入Excel:

names = ["Carlos",'Sara','Sinead','Kai','Ali','Chen','Julia','Tom'];
marks = [23,45,67,90,45,61,14,84];
result = strings(size(marks)); % 初始化结果数组

% 先计算所有结果
for i = 1:length(marks)
    if marks(i) < 39
        result(i) = "Fail";
    elseif marks(i) < 69
        result(i) = "Pass";
    else
        result(i) = "Distinction";
    end
end

% 创建表格并写入Excel
T = table(names', marks', result', 'VariableNames', {'Names', 'Marks', 'Result'});
writetable(T, 'student_results.xlsx');

运行后会生成一个名为student_results.xlsx的文件,里面的格式和你fprintf输出的完全一致,表头自动设置好。

方法二:用fopen写CSV文件(兼容性强)

如果你不想依赖MATLAB的Excel写入工具,或者需要一个更小、更通用的文件格式,可以直接写CSV文件(Excel完全支持打开CSV):

names = ["Carlos",'Sara','Sinead','Kai','Ali','Chen','Julia','Tom'];
marks = [23,45,67,90,45,61,14,84];

% 打开CSV文件准备写入
fid = fopen('student_results.csv', 'w');
if fid == -1
    error('无法创建文件,请检查路径权限');
end

% 写入表头
fprintf(fid, 'Names,Marks,Result\n');

% 循环写入每一行数据
for i = 1:length(marks)
    if marks(i) < 39
        res = "Fail";
    elseif marks(i) < 69
        res = "Pass";
    else
        res = "Distinction";
    end
    fprintf(fid, '%s,%d,%s\n', names(i), marks(i), res);
end

% 关闭文件
fclose(fid);

这个方法生成的CSV文件可以直接用Excel打开,而且不需要MATLAB有Excel的COM支持,跨平台性更好。

关于xlswrite的说明

xlswrite其实也能实现,但MATLAB的新版本已经不推荐使用它了,官方建议用writetable、writematrix等替代函数。如果你一定要用xlswrite,可以这样写:

names = ["Carlos",'Sara','Sinead','Kai','Ali','Chen','Julia','Tom'];
marks = [23,45,67,90,45,61,14,84];
result = strings(size(marks));

for i = 1:length(marks)
    if marks(i) < 39
        result(i) = "Fail";
    elseif marks(i) < 69
        result(i) = "Pass";
    else
        result(i) = "Distinction";
    end
end

% 整理成单元格数组
data = [names' num2cell(marks) result'];
% 写入表头和数据
xlswrite('student_results.xlsx', {'Names', 'Marks', 'Result'}, 1, 'A1');
xlswrite('student_results.xlsx', data, 1, 'A2');

不过还是优先推荐writetable,代码更简洁,维护性更好。

内容的提问来源于stack exchange,提问作者juhyun jung

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 13:17:46