Read csv files by regulare expression function

1 vue (au cours des 30 derniers jours)
Damith
Damith le 7 Mai 2015
Commenté : Damith le 8 Mai 2015
Hi,
I have multiple .csv files in the following format from:
TRMM_1998_01_newntcl.csv
TRMM_1998_02_newntcl.csv
.
.
.
TRMM_1998_12_newntcl.csv
TRMM_1999_01_newntcl.csv
.
.
.
TRMM_1999_12_newntcl.csv
I have the following code and I need to modify to read by month (1-12). I appreciate if someone can help me to figure this out and modify the following code.
Thanks in advance.
sad = dir('TRMM_*_newntcl.csv');
cac = regexp( {sad.name}, '1998_[01]\d_[0-3]\_' );
ism = not( cellfun( @isempty, cac ) );
d = sad(ism);
ymdh=cell2mat(textscan([d.name], ...
'TRMM_%4d_%2d_%2d%2d_newntcl.csv', ...
'collectoutput',true));

Réponse acceptée

Walter Roberson
Walter Roberson le 7 Mai 2015
month_to_match = 8; %for example
str_for_month = sprintf('%02d', month_to_match);
regexp_for_month = [ '^TRMM_[12]\d{3}_[01]\d_' str_for_month '_'];
cac = regexp( {sad.name}, regexp_for_month );
  3 commentaires
Walter Roberson
Walter Roberson le 8 Mai 2015
regexp_for_month = [ '^TRMM_[12]\d{3}_' str_for_month '_'];
Damith
Damith le 8 Mai 2015
OK. Thanks. This worked.

Connectez-vous pour commenter.

Plus de réponses (1)

Stephen23
Stephen23 le 7 Mai 2015
Modifié(e) : Stephen23 le 7 Mai 2015
You could avoid the whole regexp thing entirely by using my FEX submission datenum8601:
>> N = cellfun(@datenum8601, strrep({sad.name},'_','-'));
>> datevec(N)
ans =
1998 1 1 0 0 0
1998 2 1 0 0 0
1998 12 1 0 0 0
1999 1 1 0 0 0
1999 12 1 0 0 0
  1 commentaire
Damith
Damith le 7 Mai 2015
Thanks Stephen.But, I need to somehow use to above approach with regexp function.

Connectez-vous pour commenter.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by