elis56
elis56

Reputation: 121

Matlab: Read .txt file in matlab and save date

I have a file .txt with this data:

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

I want read this file in matlab and I want to save in a variable A only the rows with year 2010 and month 10 and 8, can you help me?

To read .txt I have used this code:

fileID = fopen('text.txt');
C = textscan(fileID,'%d %d %d %d %d %d %d %f %f %f');
fclose(fileID);

but after I don't know how to select the rows that I want.

Upvotes: 1

Views: 196

Answers (1)

Novice_Developer
Novice_Developer

Reputation: 1492

Use this code it reads every line and compares the first 6 characters of each line if they match 2010 and month 10 it stores the row in 'save' cell array

    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

here is the output

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'

for test purpose i created a new text file with more 2011 in it instead of 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

and the output changes according to the file

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'

and you can also access each row

save{2,1}

ans =

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

Upvotes: 3

Related Questions