我正在尝试将大的 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
我使用文本扫描功能:
segarray = textscan(file_id, '%f %f %f %f', blocksize, 'delimiter','\n', 'commentStyle', '#');
效果很好,但如果我将格式字符串更改为“%f %f %f %f %s”并每隔两行删除“commentStyle”、“#”选项,我就需要用“#”标记的注释被读取为单个字符串:/
有什么想法吗?
最佳答案
你可以使用
segarray = textscan(fid, '%f %f %f %f %[^\n]');
实现你想要的(所以没有任何选项 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
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 '
''
''
''
''
''
关于matlab - 将大文本文件导入 matlab(包括注释;textscan),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17443421/