Effacer les filtres
Effacer les filtres

Problem with for loop and if

1 vue (au cours des 30 derniers jours)
Maurizio
Maurizio le 27 Oct 2011
I created the following code. The code will open 4 file.txt, extract the value and do some check. The first check is to verify if on the val{1,1}{5,1} ~= 'LIMA'. The problem is that If LIMA isn't on the txt file the programme works fine but when is on the txt file i don't have any output.
Please help me. :-)
fileList = dir( '*.txt' );
for i = 1 : numel( fileList )
nameFile{i} = fileList(i, 1).name;
NAME = char( nameFile(i) );
fid = fopen( NAME );
val (i) = textscan( fid, '%s', 'delimiter', ',' );
fclose( fid );
if val{1,1}{5,1} ~= 'LIMA' %| val{1,1}{6,1} == 'VOCI'
for j = 8 : size(val{1,1},1 )
A(i,j)=str2num( val{1,i}{j,1} );
% end
end
end
end
  1 commentaire
Jan
Jan le 27 Oct 2011
@Maurizio: Please post your questions here instead of sending me emails. This forum lives from public questions and answers.
Have you read my profile?!

Connectez-vous pour commenter.

Réponses (1)

Jan
Jan le 27 Oct 2011
Do not use the == operator to compare strings. The result is an elementwise comparison. Use STRCMP instead.
You import the file data to "val(i)", but check "val{1,1}" in each iteration.
fileList = dir('*.txt');
nameFile = cell(1, numel(fileList)); % Pre-allocate!
for i = 1:numel(fileList)
NAME = fileList(i).name; % [EDITED]
nameFile{i} = NAME;
fid = fopen(NAME);
valC = textscan(fid, '%s', 'delimiter', ',');
val = valC{1};
fclose(fid);
if strcmp(val{5,1}, 'LIMA') == 0
for j = 8:size(val, 1)
A(i, j) = str2num(val{j, 1});
end
end
end
  8 commentaires
Maurizio
Maurizio le 28 Oct 2011
is not possible instead of put all the name create an array with all the name (LIMA,PRIMA,PUMa and than do a for loop to check?
Jan
Jan le 28 Oct 2011
Of course you can use a FOR loop also. But the shown "any(strcmp(String, Cell-String))" is nicer.

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