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

Matlab写入txt文件换行失效 混合文本矩阵格式保留问题

问题原因

Windows系统原生文本换行标记为\r\n(回车符+换行符组合),类Unix系统(Linux/macOS等)的换行标记为单独的\n。

  • Matlab内置的type命令兼容两种换行格式,因此在Matlab环境内查看文件时排版显示正常
  • 旧版Windows自带记事本(txt文件默认打开程序)仅识别\r\n作为换行标记,无法识别单独的\n,因此所有内容会被拼接为单行。
    你之前尝试的dlmwrite函数仅支持纯数值矩阵写入,无法满足文本说明、数值向量混合写入的需求,无需使用该方案。
解决方案

方法1:fopen指定文本模式(改动最小,推荐)

将文件打开参数从'w'修改为'wt'即可,参数中的t代表文本写入模式,Matlab会自动根据当前运行系统转换换行符格式,Windows平台下写入的\n会被自动转换为系统可识别的\r\n,无需修改后续所有fprintf语句。
修正后可直接运行的完整代码:

n = 5;
Length = 10;
s = [1;0;1;0];
t = 0.6;
% 仅修改fopen打开模式为wt
Test = fopen('Test.txt', 'wt');
fprintf(Test,'TSP Problem Size is: %d \n', n);
fprintf(Test,'Optimal Length is: %.5f \n', Length);
fprintf(Test,'Time To Solve in seconds is: %f \n', t);
fprintf(Test,'Solution is: \n');
% 原代码size(s)返回二维维度值,建议指定取第一维长度,避免向量为行向量时循环次数错误
for i=1:size(s,1) 
   fprintf(Test,'%.0f\n', s(i));
end
fclose(Test);

运行生成的文件,无论在Matlab内通过type命令查看,还是双击通过Windows资源管理器调用记事本打开,都能保留预期排版,解向量的每个值单独占一行。

方法2:手动指定Windows格式换行符

如果需要固定生成Windows标准格式的文本文件,不依赖系统自动转换,可以将所有fprintf语句中的\n替换为\r\n,文件打开模式仍保留'w'即可,核心代码片段示例:

Test = fopen('Test.txt', 'w');
fprintf(Test,'TSP Problem Size is: %d \r\n', n);
fprintf(Test,'Optimal Length is: %.5f \r\n', Length);
fprintf(Test,'Time To Solve in seconds is: %f \r\n', t);
fprintf(Test,'Solution is: \r\n');
for i=1:size(s,1)
   fprintf(Test,'%.0f\r\n', s(i));
end
fclose(Test);

补充:Windows 10 1809及更新版本的记事本已经支持识别\n格式换行符,如果使用新版系统仍出现单行显示问题,优先检查文件打开模式、文件写入后是否正常执行fclose关闭文件流即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 01:01:29