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

Matlab timetable写入后读取报错,寻求更优解决方案

解决Matlab Timetable保存与读取的格式问题

问题原因

你的代码出现报错和多余列的核心原因是:writetimetable默认会将timetable的行时间(RowTimes)作为普通数据列写入文本文件,没有标记其为时间索引列。因此:

  • 直接调用readtimetable时,Matlab无法识别哪一列是行时间,触发报错;
  • 添加TimeStep参数后,Matlab会自动生成一个从零开始的时间序列作为新的行时间列,原来的RowTimes就保留为普通数据列,导致出现多余列。

最优解决方案

方案1:用Matlab原生二进制格式保存(推荐,仅Matlab内部交互)

如果只是在Matlab脚本之间传递timetable数据,直接使用save和load,完全保留timetable的结构和属性,无需处理格式问题:

% 生成测试timetable
RowTimes = seconds(1:5)';
TT = timetable(RowTimes,[98;97.5;97.9;98.1;97.9],[120;111;119;117;116],...
               'VariableNames',{'Reading1','Reading2'})

% 保存为.mat文件
save('TT.mat', 'TT')

% 在其他脚本中读取
load('TT.mat')
% 读取后TT直接是原timetable,可直接使用

方案2:保存为文本格式(需和其他工具交互时用)

如果必须保存为文本文件,读取时通过RowTimesVariable参数指定哪一列是行时间,让Matlab正确识别:

% 保存为文本文件
writetimetable(TT, 'TT.txt')

% 读取时指定行时间列
TT2 = readtimetable('TT.txt', 'RowTimesVariable', 'RowTimes')

读取后的TT2结构和原TT完全一致,不会生成多余列。

总结

  • 仅Matlab内部使用时,优先选方案1,简单高效且无格式问题;
  • 需要跨工具交互时,用方案2指定行时间列,避免多余列和报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 11:30:56