我有一个包含此数据的文件.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
但在我不知道如何选择我想要的行之后。
答案 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