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

如何用Matlab读取列数可变且存在换行的文本数据文件

Matlab读取格式异常的TXT文件解决方案

针对你遇到的文件格式问题,可分两部分处理数据:

处理1~7556行的拆分数据

这部分每两行对应一组完整的19列数据(第一行15列,第二行4列),我们可以先提取所有数值,再重新排列为标准的19列结构:

fid = fopen('test.txt', 'r');

% 读取前7556行的所有数值(忽略换行,按空格/制表符拆分)
data_part1_flat = textscan(fid, '%f', 'Delimiter', '\t ', 'EndOfLine', '\n', 'ReturnOnError', false);
data_part1_flat = data_part1_flat{1};

% 验证元素数是否符合19列的整数倍(避免格式错误)
if mod(length(data_part1_flat), 19) ~= 0
    error('第一部分数据元素数异常,请检查文件格式');
end

% 重排为每行19列的数据集
data_part1 = reshape(data_part1_flat, 19, [])';

处理7557行及以后的6列数据

这部分直接按每行6列读取即可:

% 读取剩余行的6列数据
data_part2 = textscan(fid, '%f %f %f %f %f %f', 'Delimiter', '\t ', 'EndOfLine', '\n', 'ReturnOnError', false);
data_part2 = cell2mat(data_part2);

fclose(fid);

说明

  • 原代码失败原因:直接按每行19列匹配,但实际每行只有15/4列,textscan无法匹配格式导致读取中断。
  • 上述方案通过先提取所有数值再重排的方式,规避了换行拆分的问题;剩余部分则直接按目标格式读取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 08:35:17