在Octave中将特定格式文本文件解析为指定结构矩阵
Octave 读取文本文件并拆分指定列
核心解决方案
使用textscan时,通过精准的格式字符串直接拆分日期、时间串,并读取后续数值列,代码如下:
% 打开目标文本文件 fid = fopen('your_data.txt', 'r'); % 格式字符串:拆解日期、时间,匹配逗号分隔的数值 formatspec = '%4d%2d%2d %2d%2d%2d%3d,%f,%f,%d'; % 读取数据并合并为单一矩阵 data_cell = textscan(fid, formatspec, 'CollectOutput', true); fclose(fid); % 转换为最终矩阵 result = data_cell{1};
格式字符串详解
逐段解析%4d%2d%2d %2d%2d%2d%3d,%f,%f,%d:
%4d%2d%2d:将8位日期串20120601拆分为**年(4位)、月(2位)、日(2位)**三个整数列%2d%2d%2d%3d:将7位时间串000000603拆分为**时(2位)、分(2位)、秒(2位)、毫秒(3位)**四个整数列,%f,%f,%d:匹配后续逗号分隔的三个数值,分别对应两个浮点数和一个整数'CollectOutput', true:让textscan把所有列合并到一个单元格,直接转换为矩阵即可
效果验证
输入单行文本:
20120601 000000603,1.234610,1.234780,0
输出矩阵对应行:
2012 6 1 0 0 0 603 1.23461 1.23478 0
内容的提问来源于stack exchange,提问作者babelproofreader
相关产品推荐
相关产品推荐

