【发布时间】:2013-10-23 13:27:22
【问题描述】:
我正在尝试解读来自眼动追踪设备的数据。眼动仪导出的文件为ASCII格式。
包含单眼数据的记录文件仅如下所示(仅显示四行):
6372825 645.3 275.4 1362.0 ...
6372826 644.6 274.0 1364.0 ...
6372827 644.2 273.2 1365.0 ...
6372828 642.5 272.7 1367.0 ...
请注意,上方每一行末尾的点是输出文件的一部分,即我没有出于本问题的目的添加它们。我通常会检测到这些点,然后将它们扔掉。
以上列的格式为[timestamp,X,Y,瞳孔大小,{...}]
双眼的记录如下所示(仅显示四行):
505076 416.8 755.4 1148.0 23.6 751.1 1239.0 .....
505077 417.0 758.4 1143.0 23.7 753.1 1244.0 .....
505078 416.7 761.4 1146.0 24.6 752.1 1249.0 .....
505079 416.1 764.8 1150.0 27.3 750.2 1250.0 .....
本例中,数据格式为[timestamp,X(left),Y(left),punctureSize(left),X(right),Y(right),particleSize(right),{..... }]
在这两种情况下,我都想从文本中提取数字并将它们分配给一个数组。以下是我对单眼记录的处理方式:
eyeData = textscan(fid,'%d %f %f %f %s');
我可以对双目记录做同样的事情,使用以下代码:
eyeData = textscan(fid,'%d %f %f %f %f %f %f %s');
问题是,我希望能够自动检测我正在处理的数据是单目数据还是双目数据。换句话说,我需要一种方法来确定 ASCII 文件是有五列还是八列。请注意,两种情况下的最后一列都仅由一系列点组成。虽然我通常只是把它扔掉,但它可能对确定记录中的眼睛数量很有用(因为单目记录以... 结束每一行,而双目以..... 结束)
欢迎任何关于如何计算每个 ASCII 文件中有多少列的想法!
【问题讨论】: