Reputation: 121
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
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