【发布时间】:2014-09-04 20:27:18
【问题描述】:
我有一个文件,其中数据存储在列中,上面有一个标题,中间有一个标记点。它是使用跟踪器记录的运动数据日志,并且例如每次有人在键盘上按“M”时设置标记。 我的问题是,如果我尝试读取的行是所需的格式,我如何在每次检查时读取数据?我非常了解 C,但在使用 Matlab 以及函数在那里的工作方式方面存在问题。 到目前为止,我的方法是:
fId = fopen('Coordinates.txt', 'r');
i = 0;
A=zeros(10000, 17);
tline = fgetl(fId);
while ischar(tline)
i = i+1;
if isnan(tline)
else
A(i) = sscanf(tline, '%f %f %f %f %f %f %d %c %d %d %d %f %f %f %f %f %f', 17);
end
% handX(i) = A(i,1);
tline = fgetl(fId);
end
fclose(fId);
如果你知道我打算用这个去哪里? (开头)我的文件是这样的:
ID is 0001; Number of Trial is 012;
Time is Tue Sep 02 15:35:32 2014
V=Virtual
X [in] Y [in] Z [in] ROLL [rad] YAW [rad] PITCH [rad] TIME [ms] Avatar Style Incongruence VHI RLP VX [in] VY [in] VZ [in] VYaw [rad] VPitch [rad] VRoll [rad]
2.548209 0.083796 -3.264887 -0.580893 -1.505823 0.147869 1935 h 0 0 0 -4.951791 -1.916204 -3.264887 -0.580893 -1.505823 0.147869
2.550583 0.083348 -3.269413 -0.579991 -1.506423 0.147635 2075 h 0 0 0 -4.949417 -1.916652 -3.269413 -0.579991 -1.506423 0.147635
所以我想做的是查看文件中的每一行,检查它是否以数字开头,跳过 nan() 行,并且最好在遇到 nan() 行时做一个标记)。另外,我想将值保存在单独的向量中(如 handX)。到目前为止,我只收到与 sscanf() 调用的行中的元素数量不匹配的错误。 谢谢!
【问题讨论】:
-
作为一般评论,最好明确提供错误和堆栈跟踪,而不仅仅是摘要。