[MATLAB] Boucle IF
Résolu
Newenda
Messages postés
75
Date d'inscription
Statut
Membre
Dernière intervention
-
Newenda Messages postés 75 Date d'inscription Statut Membre Dernière intervention -
Newenda Messages postés 75 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
question toute bête :
si on a une boucle
----------------
if cas1
blablbalba
elseif cas 2
blablba
elseif cas 3
blablba
end
--------------------
Si une variable est en accord avec cas1 et cas3 par exemple, il rentre dans les deux if? et non que dans le 1er et s'arrete ??
Merci
question toute bête :
si on a une boucle
----------------
if cas1
blablbalba
elseif cas 2
blablba
elseif cas 3
blablba
end
--------------------
Si une variable est en accord avec cas1 et cas3 par exemple, il rentre dans les deux if? et non que dans le 1er et s'arrete ??
Merci
A voir également:
- Boucle if matlab
- Xiaomi s'éteint tout seul et se rallume en boucle - Forum Xiaomi
- Boucle excel sans macro - Forum Excel
- Mon pc s'allume et s'éteint en boucle ✓ - Forum Matériel & Système
- Vlc lire en boucle ✓ - Forum Lecteurs et supports vidéo
- Mise à disposition de boucle locale dédiée ✓ - Forum Freebox
12 réponses
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 !
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...
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ç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 ???
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 !
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 .
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
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.