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

使用readtable读取含重复表头的TXT文件返回空表的解决方法

解决方法

1. 读取文件所有行

先用readlines把文件每一行都读入,方便后续拆分数据块:

lines = readlines('data.txt');
% 过滤空行避免干扰
lines = lines(~isspace(lines));

2. 定位每个数据块的起始位置

每个数据块都以#Parameters开头,直接找出这些行的索引:

block_starts = find(startsWith(lines, '#Parameters'));
% 增加末尾标记,方便处理最后一个数据块
block_starts = [block_starts; length(lines)+1];

3. 逐个解析数据块为矩阵

用单元格数组存储100个N×2矩阵,循环处理每个块:

data_blocks = cell(1, length(block_starts)-1);

for i = 1:length(block_starts)-1
    start_idx = block_starts(i);
    end_idx = block_starts(i+1) - 1;
    
    % 跳过每个块开头的3行表头,提取纯数据行
    data_lines = lines(start_idx+3 : end_idx);
    
    % 将数据行解析为矩阵
    data_blocks{i} = readmatrix(char(data_lines));
end

低版本MATLAB兼容写法

如果你的MATLAB版本低于R2019b(无readmatrix),可以替换成以下代码解析数据:

% 替换上述代码中的readmatrix行
data_cells = split(data_lines);
data_blocks{i} = str2double(data_cells);

结果验证

现在data_blocks里的每个元素就是对应的数据块矩阵,比如查看第一个块:

disp(data_blocks{1});

问题根源:readtable默认将整个文件视为单一表格,重复出现的表头行打乱了解析逻辑,导致返回空表。手动拆分每个数据块再单独解析就能解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 22:38:31