我试图将大的txt文件(> 1gb)导入matlab.
这是数据结构:
667.55535 -0.00 0.000 0.0158
667.5554 -0.01 -0.000 0.0158
667.55545 -0.01 4.037 10.0000
667.5555 -0.00 4.000 10.0000 #1 Trigger Camera 10 Hz #2 Trigger Camera 10 Hz
667.55555 -0.00 4.000 10.0000
667.5556 -0.01 4.000 10.0000
Run Code Online (Sandbox Code Playgroud)
我使用textscan功能:
segarray = textscan(file_id, '%f %f %f %f', blocksize, 'delimiter','\n', 'commentStyle', '#');
Run Code Online (Sandbox Code Playgroud)
工作得很好,但如果我将格式字符串更改为'%f%f%f%f%s'并删除'commentStyle','#'选项,我需要标记为'#'的注释单个字符串:/
有任何想法吗?
您可以使用
segarray = textscan(fid, '%f %f %f %f %[^\n]');
Run Code Online (Sandbox Code Playgroud)
实现你想要的(所以没有任何选择textscan()).最后一个格式字符表示textscan将匹配任何非换行符的尾随字符.
这导致:
test.txt:
667.55535 -0.00 0.000 0.0158
667.5554 -0.01 -0.000 0.0158
667.55545 -0.01 4.037 10.0000
667.5555 -0.00 4.000 10.0000 #1 Trigger Camera 10 Hz #2 Trigger Camera 10 Hz
667.55555 -0.00 4.000 10.0000
667.5556 -0.01 4.000 10.0000
667.5555 -0.11 4.000 12.0000 #1 Trigger Camera 11 Hz #2 Trigger Camera 12 Hz
667.5557 -0.00 4.000 10.0000
667.556 -0.01 4.000 10.0000
667.55855 -0.00 4.000 10.0000
667.5596 -0.01 4.000 10.0000
667.55105 -0.00 4.000 10.0000
667.5511 -0.01 4.000 10.0000
Run Code Online (Sandbox Code Playgroud)
segarray{:}:
[first three columns omitted for brevity]
ans =
0.0158
0.0158
10.0000
... % fourth column abbreviated
10.0000
10.0000
ans =
''
''
''
'#1 Trigger Camera 10 Hz #2 Trigger Camera 10 Hz '
''
''
'#1 Trigger Camera 11 Hz #2 Trigger Camera 12 Hz '
''
''
''
''
''
Run Code Online (Sandbox Code Playgroud)