Matlab:在matlab中读取.txt文件并保存日期

时间:2016-05-24 12:24:17

标签: matlab

我有一个包含此数据的文件.txt:

S<decltype(x)>::type

我想在matlab中读取这个文件,我想在变量A中保存只有2010年和10月8日的行,你能帮助我吗?

要阅读.txt,我使用了以下代码:

user check-in time (year-month-day hours) latitude  longitude  location id
  0 2010-10-03  22-21-49         30.2448597206  -97.7571630478  18417
  0 2010-10-02  01-48-43         30.2558143993  -97.7634179592  4256132
  0 2010-10-01  14-36-39         30.2679095833  -97.7493124167  21714
  0 2010-09-30  23-23-22         30.2643362697  -97.7410461251  211286
  0 2010-09-29  00-31-24         30.2379105     -97.79996073    539065
  0 2010-09-28  23-47-07         30.2313745667  -97.79745475    15590
  0 2010-09-27  14-52-01         30.2691029532  -97.7493953705  420315
  0 2010-09-26  16-43-45         30.250617981   -97.7658996582  121955
  0 2010-08-30  00-11-01         30.2509939667  -97.7489662167  9508
  0 2011-08-28  22-27-57         30.2448597206  -97.7571630478  18417

但在我不知道如何选择我想要的行之后。

1 个答案:

答案 0 :(得分:3)

使用此代码读取每一行并比较每行的前6个字符(如果它们匹配2010年和10月)它将行存储在“保存”单元格数组

    fileID = fopen('test2.txt');
C = textscan(fileID,'%s %s %s %s %s %s %s %s %s %s','Delimiter',',')
fileID2 = fopen('test2.txt');
C2 = textscan(fileID2,'%s %s %s %s %s %s %s %s %s %s')
for i = 1:11
   if(strncmp([C2{1}{i} ' 2010-10'],C{1}{i},9))
       save{i,:} = C{1}{i}
   end
end

这是输出

save = 

    []
    '0 2010-10-03  22-21-49         30.2448597206  -97.7571630478  18417'
    '0 2010-10-02  01-48-43         30.2558143993  -97.7634179592  4256132'
    '0 2010-10-01  14-36-39         30.2679095833  -97.7493124167  21714'

出于测试目的,我创建了一个新的文本文件,其中包含更多2011而不是2010

user check-in time (year-month-day hours) latitude  longitude  location id

  0 2010-10-03  22-21-49         30.2448597206  -97.7571630478  18417
  0 2010-10-02  01-48-43         30.2558143993  -97.7634179592  4256132
  0 2010-10-01  14-36-39         30.2679095833  -97.7493124167  21714
  0 2010-09-30  23-23-22         30.2643362697  -97.7410461251  211286
  0 2010-09-29  00-31-24         30.2379105     -97.79996073    539065
  0 2010-09-28  23-47-07         30.2313745667  -97.79745475    15590
  0 2011-09-27  14-52-01         30.2691029532  -97.7493953705  420315
  0 2011-09-26  16-43-45         30.250617981   -97.7658996582  121955
  0 2011-08-30  00-11-01         30.2509939667  -97.7489662167  9508
  0 2011-08-28  22-27-57         30.2448597206  -97.7571630478  18417

并且输出根据文件

而变化
save = 

    []
    '0 2010-10-03  22-21-49         30.2448597206  -97.7571630478  18417'
    '0 2010-10-02  01-48-43         30.2558143993  -97.7634179592  4256132'
    '0 2010-10-01  14-36-39         30.2679095833  -97.7493124167  21714'

您也可以访问每一行

save{2,1}

ans =

0 2010-10-03  22-21-49         30.2448597206  -97.7571630478  18417