matlab - 将大文本文件导入 matlab(包括注释;textscan)

标签 matlab textscan

我正在尝试将大的 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/

相关文章:

matlab - 检测柱状文本文件中的列数

Python 等效于 Matlab 文本扫描

matlab - 隐藏 Matlab 图形窗口的最大化/最小化和关闭按钮

matlab - 如何在 MATLAB 中设置以编程方式调整大小的 UI

arrays - 在 Matlab 中比较两列并对值求和

matlab - 使用 Matlab 枚举

matlab - 从 textread 更改为 textscan MATLAB

regex - 在Matlab中以最通用的方式从char数组中提取数值数组

matlab - 嵌套文本扫描语句

c - 在64位机器上处理文件但在32位机器上开发