我正在尝试导入数字数据以及ASCI信息,这是最近加到文件上的。我可以很好地将数值数据导入到数据结构中,但是MATLAB(R2014a)的重要数据函数甚至无法识别写入的(事件)数据。
我从几年前就发现了有关这个问题的问题,但这些问题并没有得到真正的回答。根据这些建议,我尝试过:引入空矩阵的data_temp = cell2mat(textscan(fopen('P:\FileName))),以及“load”函数和“importdata”。load函数失败,因为我的数据每行有不同的列数。
,那么,有人知道一个函数/工作方法来输入最后几行数据吗?
{我不想使用ImportWizard,因为这需要手动选择,而且我正在编写一个用户友好的代码,它通过GUI}输入数据文件。
下面是一个示例数据文件--有数值数据的行1:412和事件数据的行413:437:
409 0.000000 0.000000 0.000000
410 0.000000 0.000000 0.000000
411 0.000000 0.000000 0.000000
412 0.000000 0.000000 0.000000
活动: LHS
Number of Frames: 2 Frame 1: 222 Frame 2: 327 Event: LTO Number of Frames: 2 Frame 1: 181 Frame 2: 283 Event: RHS Number of Frames: 2 Frame 1: 169 Frame 2: 274 Event: RTO Number of Frames: 1 Frame 1: 232 Event: LHS FP Number of Frames: 1 Frame 1: 222 Event: RHS FP Number of Frames: 1 Frame 1: 169 感谢您的时间和帮助!
发布于 2015-03-25 18:00:02
我不确定您的最终目标,因为这不是一个纯数字文件,即在事件块中的行中混合了一些数字。因此,我不确定您是要在行中提取数字,还是询问如何读取所有行并存储在一个变量中,如python中的readlines()。我想你的要求属于后一种。我想您可以通过fgets()读取每一行,然后存储在一个单元格变量中。因此,代码的框架将是:
fid = fopen('filename.txt', 'r');
lines = {};
tline = fgets(fid);
while ischar( lines{end} )
lines{end+1} = tline;
tline = fgets(fid);
end
fclose(fid);最后的结果存储在“line”变量中,如果需要,您可以进一步解析它们。
参考http://www.mathworks.com/help/matlab/ref/fgets.html
发布于 2015-03-31 14:25:37
您可以通过MATLAB的导入函数‘import .data’导入一个.data文件,但是它不会导入不是头文件的文本。此代码将打开并逐行扫描文件,搜索文本“事件”。(我不能把这段代码归功于我--我的朋友为我写的,但我想把它寄给试图做同样事情的人)
fn = ('file.data');
B = importdata(fn);
fid = fopen(fn);
tline = fgets(fid);
D=[];
while ischar(tline) % while not at the end of file
if strncmp(tline,'Event',5) % If the first 5 letters are 'Event'
Evt=strtrim(strsplit(tline,'\t')); % find event name
Evt=Evt{2};
Nb = fgets(fid); % Get the number of frames
Nb=sscanf(Nb,' Number of Frames: %d');
F=[];
for f=1:Nb % For each frame, get the frame number
ln = fgets(fid);
F(f)=sscanf(ln,[' Frame ' num2str(f) ': %d']);
end
D(end+1).Name = Evt;
D(end).Frames = F;
end
tline = fgets(fid);
end
fclose(fid);https://stackoverflow.com/questions/29262773
复制相似问题