[MATLAB] Boucle IF
Résolu/Fermé
Newenda
Messages postés
75
Date d'inscription
lundi 1 décembre 2008
Statut
Membre
Dernière intervention
26 avril 2021
-
8 avril 2009 à 17:06
Newenda Messages postés 75 Date d'inscription lundi 1 décembre 2008 Statut Membre Dernière intervention 26 avril 2021 - 10 avril 2009 à 11:46
Newenda Messages postés 75 Date d'inscription lundi 1 décembre 2008 Statut Membre Dernière intervention 26 avril 2021 - 10 avril 2009 à 11:46
12 réponses
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
8 avril 2009 à 17:36
8 avril 2009 à 17:36
Oui, ba dans ce cas, ce n'est pas MATLAB que j'accuserai d'être con.
Lit la documentation de fopen() tu devrai trouver ton bonheur !
Lit la documentation de fopen() tu devrai trouver ton bonheur !
Newenda
Messages postés
75
Date d'inscription
lundi 1 décembre 2008
Statut
Membre
Dernière intervention
26 avril 2021
24
8 avril 2009 à 17:14
8 avril 2009 à 17:14
D'abord Ok
et ensuite, MERCI
mais le pb qui se pose alors c'est que quand j'en mets plusieurs comme dans cet exemple de structure :
--------------------------------------------------
fopen fichier
if
end
if
end
fclose(fid)
--------------------------------------------------
Il me met un erreur dans la fermeture du fichier...
et ensuite, MERCI
mais le pb qui se pose alors c'est que quand j'en mets plusieurs comme dans cet exemple de structure :
--------------------------------------------------
fopen fichier
if
end
if
end
fclose(fid)
--------------------------------------------------
Il me met un erreur dans la fermeture du fichier...
Lazarey
Messages postés
3239
Date d'inscription
vendredi 3 novembre 2006
Statut
Membre
Dernière intervention
21 mai 2012
745
8 avril 2009 à 17:08
8 avril 2009 à 17:08
Salut,
D'abord, if n'est pas une boucle, mais un test !
Et ensuite, il me semble que non, il n'y rentre pas. Il s'arrête dès qu'il trouve une condition vraie.
Si tu veux qu'il rentre dans chaque if, il faut faire un if et un end pour chaque cas.
D'abord, if n'est pas une boucle, mais un test !
Et ensuite, il me semble que non, il n'y rentre pas. Il s'arrête dès qu'il trouve une condition vraie.
Si tu veux qu'il rentre dans chaque if, il faut faire un if et un end pour chaque cas.
Lazarey
Messages postés
3239
Date d'inscription
vendredi 3 novembre 2006
Statut
Membre
Dernière intervention
21 mai 2012
745
8 avril 2009 à 17:18
8 avril 2009 à 17:18
De rien !
Have fun !
Have fun !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Newenda
Messages postés
75
Date d'inscription
lundi 1 décembre 2008
Statut
Membre
Dernière intervention
26 avril 2021
24
8 avril 2009 à 17:20
8 avril 2009 à 17:20
j'ai edit mon dernier post.. une idée?
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
8 avril 2009 à 17:23
8 avril 2009 à 17:23
ça depend peut être de ce que tu fait dans tes if.
Si tu lit plusieurs fois le fichier alors que tu n'as pas le droit ou un truc dans le genre.
C'EST QUOI L'ERREUR ???
Si tu lit plusieurs fois le fichier alors que tu n'as pas le droit ou un truc dans le genre.
C'EST QUOI L'ERREUR ???
Newenda
Messages postés
75
Date d'inscription
lundi 1 décembre 2008
Statut
Membre
Dernière intervention
26 avril 2021
24
8 avril 2009 à 17:30
8 avril 2009 à 17:30
Pfff en faite j'ai comprit, putain il est con ce matlab
en faite dans les if, je fait des écritures de fichier donc évidemment je les ferme ensuite du style :
--------------------------------------------------
fopen fichier
if blabla
fopen('blblba.txt,'wt')
fprintf blbalba
fclose(fid)
end
if
fopen('blblba.txt,'wt')
fprintf blbalba
fclose(fid)
end
fclose(fid)
--------------------------------------------------
Donc il mélange tous les fids
moyen pour un chaque fopen de lui inclure un numéro de fid pour qu'il se gourre pas ???
Merci !
en faite dans les if, je fait des écritures de fichier donc évidemment je les ferme ensuite du style :
--------------------------------------------------
fopen fichier
if blabla
fopen('blblba.txt,'wt')
fprintf blbalba
fclose(fid)
end
if
fopen('blblba.txt,'wt')
fprintf blbalba
fclose(fid)
end
fclose(fid)
--------------------------------------------------
Donc il mélange tous les fids
moyen pour un chaque fopen de lui inclure un numéro de fid pour qu'il se gourre pas ???
Merci !
Newenda
Messages postés
75
Date d'inscription
lundi 1 décembre 2008
Statut
Membre
Dernière intervention
26 avril 2021
24
8 avril 2009 à 17:50
8 avril 2009 à 17:50
Hum passons sur l'allusion sarcastique dont je pressentais la venue.
J'ai bien sûr fait un help fopen, mis à part que tout ça est écrit dans un dialecte anglo-saxon indéchiffrable, je n'ai rien trouvé qui puisse m'aider. Je ne vois pas quel argument utilisé dans mon cas.
pffffiou .
J'ai bien sûr fait un help fopen, mis à part que tout ça est écrit dans un dialecte anglo-saxon indéchiffrable, je n'ai rien trouvé qui puisse m'aider. Je ne vois pas quel argument utilisé dans mon cas.
pffffiou .
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
9 avril 2009 à 09:31
9 avril 2009 à 09:31
? 8-O
met ton code réel concernant la gestion ouverture fermeture de fichier.
met ton code réel concernant la gestion ouverture fermeture de fichier.
Newenda
Messages postés
75
Date d'inscription
lundi 1 décembre 2008
Statut
Membre
Dernière intervention
26 avril 2021
24
9 avril 2009 à 11:04
9 avril 2009 à 11:04
ok j'en ai enlevé la moitié
-----------------------------------------------
--------------DEBUT PROGRAMME---------
-----------------------------------------------
for i = an_deb:an_fin;
for j = mois_deb:mois_fin;
for k = jour_deb:jour_fin;
for l = heure_deb:heure_fin;
try
dossierCourant = fullfile(num2str(i,'%02d'),num2str(j,'%02d'),num2str(k,'%02d'),num2str(l,'%02d'));
fichier = dir(fullfile(Directory_source,dossierCourant,'\*.pro'));
%%%%%%%%%%%%%% Boucle: Lecture de tous les fichiers du dossier %%%%%%%%%%%
for p=1:size(fichier,1);
fid=fopen(fullfile(Directory_source,dossierCourant,fichier(p).name),'r');
disp(fid)
%%%%%%%%%%%%%% Lecture des Données voulues %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
fseek(fid,312,'bof');
duree_avant = fread(fid,1,'single');
[...]
%%%%%%%%%%%%%% Lecture des voies 1 et voies 2 %%%%%%%%%%%%%%%%%%%%%%%%%%%
fseek(fid,premiere,'bof');
voie1 = fread(fid,nombre_echant,'int16');
size(voie1);
fseek(fid,premiere+decalage,'bof');
voie2 = fread(fid,nombre_echant,'int16');
size(voie2);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Corrélation entre voie 1 et voie 2 %%%%%%%%%
Correl = corr2(voie1, voie2);
%%%%%%%%%%%%%%%%%%%%CONDITION%%%%%%%%%%%%%%%%%%%%
if ( Correl > -1 & Correl < 0.0001 );
compteur_corr_bruit_neg = compteur_corr_bruit_neg + 1
fid = fopen('fichiers negatifs.txt','at');
fprintf(fid,'%s\n',fichier(p).name);
fclose(fid);
elseif( Correl > 0.000001 & Correl < 1 );
compteur_corr_95_1_neg = compteur_corr_95_1_neg + 1
fid = fopen('fichiers positifs.txt','at');
fprintf(fid,'%s\n',fichier(p).name);
fclose(fid)
end
if ( (abs(Correl) > 0.5) & (abs(Correl) < 0.6) );
fid = fopen('fichiers_correl_05_06.txt','at');
fprintf(fid,'%s\n',fichier(p).name);
fclose(fid);
compteur_correl_05_a_06 = compteur_correl_05_a_06 +1 ;
elseif ( (abs(Correl) > 0.9) & (abs(Correl) < 0.95) );
fid = fopen('fichiers_correl_09_95.txt','at');
fprintf(fid,'%s\n',fichier(p).name);
fclose(fid);
compteur_correl_09_a_095 = compteur_correl_09_a_095 +1 ;
elseif ( (abs(Correl) > 0.95) & (abs(Correl) < 1) );
if ( (abs(Correl) > 0.95) & (abs(Correl) < 0.97) );
compteur_correl_95_a_97 = compteur_correl_95_a_97 +1 ;
fid = fopen('fichiers_correl_95_97.txt','at');
fprintf(fid,'%s\n',fichier(p).name);
fclose(fid);
elseif ( (abs(Correl) > 0.97) & (abs(Correl) < 1) );
compteur_correl_97_a_1 = compteur_correl_97_a_1 +1 ;
end
end
fclose(fid) ;
end; %end de for
end; % de try
end
end
end
end
-----------------------------------------------
--------------FIN PROGRAMME--------------
-----------------------------------------------
Merci
-----------------------------------------------
--------------DEBUT PROGRAMME---------
-----------------------------------------------
for i = an_deb:an_fin;
for j = mois_deb:mois_fin;
for k = jour_deb:jour_fin;
for l = heure_deb:heure_fin;
try
dossierCourant = fullfile(num2str(i,'%02d'),num2str(j,'%02d'),num2str(k,'%02d'),num2str(l,'%02d'));
fichier = dir(fullfile(Directory_source,dossierCourant,'\*.pro'));
%%%%%%%%%%%%%% Boucle: Lecture de tous les fichiers du dossier %%%%%%%%%%%
for p=1:size(fichier,1);
fid=fopen(fullfile(Directory_source,dossierCourant,fichier(p).name),'r');
disp(fid)
%%%%%%%%%%%%%% Lecture des Données voulues %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
fseek(fid,312,'bof');
duree_avant = fread(fid,1,'single');
[...]
%%%%%%%%%%%%%% Lecture des voies 1 et voies 2 %%%%%%%%%%%%%%%%%%%%%%%%%%%
fseek(fid,premiere,'bof');
voie1 = fread(fid,nombre_echant,'int16');
size(voie1);
fseek(fid,premiere+decalage,'bof');
voie2 = fread(fid,nombre_echant,'int16');
size(voie2);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Corrélation entre voie 1 et voie 2 %%%%%%%%%
Correl = corr2(voie1, voie2);
%%%%%%%%%%%%%%%%%%%%CONDITION%%%%%%%%%%%%%%%%%%%%
if ( Correl > -1 & Correl < 0.0001 );
compteur_corr_bruit_neg = compteur_corr_bruit_neg + 1
fid = fopen('fichiers negatifs.txt','at');
fprintf(fid,'%s\n',fichier(p).name);
fclose(fid);
elseif( Correl > 0.000001 & Correl < 1 );
compteur_corr_95_1_neg = compteur_corr_95_1_neg + 1
fid = fopen('fichiers positifs.txt','at');
fprintf(fid,'%s\n',fichier(p).name);
fclose(fid)
end
if ( (abs(Correl) > 0.5) & (abs(Correl) < 0.6) );
fid = fopen('fichiers_correl_05_06.txt','at');
fprintf(fid,'%s\n',fichier(p).name);
fclose(fid);
compteur_correl_05_a_06 = compteur_correl_05_a_06 +1 ;
elseif ( (abs(Correl) > 0.9) & (abs(Correl) < 0.95) );
fid = fopen('fichiers_correl_09_95.txt','at');
fprintf(fid,'%s\n',fichier(p).name);
fclose(fid);
compteur_correl_09_a_095 = compteur_correl_09_a_095 +1 ;
elseif ( (abs(Correl) > 0.95) & (abs(Correl) < 1) );
if ( (abs(Correl) > 0.95) & (abs(Correl) < 0.97) );
compteur_correl_95_a_97 = compteur_correl_95_a_97 +1 ;
fid = fopen('fichiers_correl_95_97.txt','at');
fprintf(fid,'%s\n',fichier(p).name);
fclose(fid);
elseif ( (abs(Correl) > 0.97) & (abs(Correl) < 1) );
compteur_correl_97_a_1 = compteur_correl_97_a_1 +1 ;
end
end
fclose(fid) ;
end; %end de for
end; % de try
end
end
end
end
-----------------------------------------------
--------------FIN PROGRAMME--------------
-----------------------------------------------
Merci
Char Snipeur
Messages postés
9813
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
3 octobre 2023
1 298
9 avril 2009 à 11:21
9 avril 2009 à 11:21
Oui, j'ai espéré, mais c'est bien ce que je pensais... MATLAB n'est vraiment pas en cause.
en gros tu fais (si j'ai bien lu) :
fid=fopen("fichier1");
[...]
if([...])
fid=fopen("fichier2");
fclose(fid);
endif
[...]
fclose(fid);
Ok?
Tu es bien daccord que la valeur renvoyé par fopen("fichier1") est stocké dans la variable "fid".
Ensuite, tu stocke dans cette même variable la valeur renvoyé par fopen("fichier2"). Tu perds donc la valeur de fopen("fichier1") !
C'est un peu comme si tu fesais :
a=1;
a=2;
clear a;
et que tu râle car "a" ne contient pas la variable 1.
Bref, il suffit d'uiliser une autre variable pour ta suit de if, "fid_tmp" par exemple.
en gros tu fais (si j'ai bien lu) :
fid=fopen("fichier1");
[...]
if([...])
fid=fopen("fichier2");
fclose(fid);
endif
[...]
fclose(fid);
Ok?
Tu es bien daccord que la valeur renvoyé par fopen("fichier1") est stocké dans la variable "fid".
Ensuite, tu stocke dans cette même variable la valeur renvoyé par fopen("fichier2"). Tu perds donc la valeur de fopen("fichier1") !
C'est un peu comme si tu fesais :
a=1;
a=2;
clear a;
et que tu râle car "a" ne contient pas la variable 1.
Bref, il suffit d'uiliser une autre variable pour ta suit de if, "fid_tmp" par exemple.
Newenda
Messages postés
75
Date d'inscription
lundi 1 décembre 2008
Statut
Membre
Dernière intervention
26 avril 2021
24
10 avril 2009 à 11:46
10 avril 2009 à 11:46
Oui désolé pour le dérangement, j'ai vu ma faute honteuse après coup.
Merci
Merci