首页 > 解决方案 > 如何读取文本文件并将数据加载到数组中?

问题描述

我有一个遵循以下格式的 .txt 文件:

00:00.300      ID:4        zzzzzzzzzzz                
00:02.155      ID:4        aaaaaaaaaaaaa        
00:04.662      ID:4        dsadasd  
**00:32.283**      ID:4        level **790**  
00:32.155      ID:4        Sfghgfs  
00:32.200      ID:4        Tsdfsdfdfsff  
**00:32.205**      ID:4        level **640**  
00:32.206      ID:4        Sadssd  
00:32.208      ID:4        asdasgsfgsgsagsa  
00:32.210      ID:4        adasgx  
00:32.212      ID:4        Masddasdas.  
**01:40:40.698**   ID:4        level **500**

因此,我想扫描文件并将时间提取到数组中,只要出现在“级别 XXX”行中。在此之后,我想读取对应的级别并保存在另一个数组中以绘制两者的图形。

我尝试了这些功能:textscanstrfind它不起作用。你们能帮帮我吗?

标签: matlabtextscan

解决方案


您可以使用正则表达式:

raw = fileread('mytext.txt');
tokens = regexp(raw,'((?:\d{2}:)?\d{2}:\d{2}\.\d{3})[^\n]+level[^\d]+(\d{3})','tokens');
tokens = [tokens{:}];
timestamps = tokens(1:2:end);
levels = tokens(2:2:end);

检查输出:

>> timestamps

timestamps =

  1×3 cell array

    {'00:32.283'}    {'00:32.205'}    {'01:40:40.698'}

>> levels

levels =

  1×3 cell array

    {'790'}    {'640'}    {'500'}

您可以在此处查看正则表达式的工作原理。


推荐阅读