Extraire l'extension avec Matlab
Fermé
julienlali
Messages postés
6
Date d'inscription
jeudi 17 mars 2011
Statut
Membre
Dernière intervention
17 mars 2011
-
17 mars 2011 à 02:02
khunlun Messages postés 117 Date d'inscription mardi 12 avril 2005 Statut Membre Dernière intervention 17 avril 2012 - 18 mars 2011 à 11:03
khunlun Messages postés 117 Date d'inscription mardi 12 avril 2005 Statut Membre Dernière intervention 17 avril 2012 - 18 mars 2011 à 11:03
A voir également:
- Extraire l'extension avec Matlab
- Extraire une video youtube - Guide
- Extension dat - Guide
- Changer extension fichier - Guide
- Extension .bin - Guide
- Extraire son video - Guide
11 réponses
khunlun
Messages postés
117
Date d'inscription
mardi 12 avril 2005
Statut
Membre
Dernière intervention
17 avril 2012
27
Modifié par khunlun le 17/03/2011 à 08:50
Modifié par khunlun le 17/03/2011 à 08:50
Bonjour,
Je te propose ça :
path est le dossier contenant les fichiers à traiter.
fid = fopen('monFichier.txt','w+');
entities = dir('.');
for it = 1 : size(entities,1)
% si l'entité est un dossier, on passe à la suivante
if entities(it).isdir
continue;
end
currentFile = entities(it).name;
ind = strfind(currentFile,'.');
fprintf(fid,'%s\n',currentFile(1,ind(end)+1:end));
end
fclose(fid);
Le fichier monFichier.txt contient toutes les chaines de caractère se trouvant après le point.
Bonne journée.
Je te propose ça :
path est le dossier contenant les fichiers à traiter.
fid = fopen('monFichier.txt','w+');
entities = dir('.');
for it = 1 : size(entities,1)
% si l'entité est un dossier, on passe à la suivante
if entities(it).isdir
continue;
end
currentFile = entities(it).name;
ind = strfind(currentFile,'.');
fprintf(fid,'%s\n',currentFile(1,ind(end)+1:end));
end
fclose(fid);
Le fichier monFichier.txt contient toutes les chaines de caractère se trouvant après le point.
Bonne journée.
khunlun
Messages postés
117
Date d'inscription
mardi 12 avril 2005
Statut
Membre
Dernière intervention
17 avril 2012
27
17 mars 2011 à 18:46
17 mars 2011 à 18:46
Alors pour le traitement, je te propose ça :
fid = fopen('liste.txt','r');
while ~feof(fid)
currentLine = fgetl(fid);
** traitement de l'extension **
end
fclose(fid);
fid = fopen('liste.txt','r');
while ~feof(fid)
currentLine = fgetl(fid);
** traitement de l'extension **
end
fclose(fid);
julienlali
Messages postés
6
Date d'inscription
jeudi 17 mars 2011
Statut
Membre
Dernière intervention
17 mars 2011
Modifié par julienlali le 17/03/2011 à 18:40
Modifié par julienlali le 17/03/2011 à 18:40
Wa !
Ça c'est super.
T'as raison, on se retrouve avec une fichier .txt où sont toutes les extensions séparées d'un 'retour'.
C'est déjà mieux que ce que j'obtenais, c'est-à-dire les noms au complet.
************************
IL ME RESTE UN PROBLÈME !!!
************************
Il me reste à stocker chaque extension ensuite, dans le but de les invoquer plus tard.
Comme le nombre d'extension varie, et que certain dossiers contiennent 200 fichiers, je ne veux pas garder cette fonction Textread que j'utilise actuellement !
[E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T] = textread('liste.txt',...
'%29s %29s %29s %29s %29s %29s %29s %29s %29s %29s %29s %29s %29s %29s %29s %29s');
Ça, c'est bon quand t'as seulement quelques fichiers, mais pour 200 c'est pas bon ! Surtout que la cardinalité varie....
Qu'est-ce que je peux faire pour ça !?
Merci de votre aide encore !!
Ça c'est super.
T'as raison, on se retrouve avec une fichier .txt où sont toutes les extensions séparées d'un 'retour'.
C'est déjà mieux que ce que j'obtenais, c'est-à-dire les noms au complet.
************************
IL ME RESTE UN PROBLÈME !!!
************************
Il me reste à stocker chaque extension ensuite, dans le but de les invoquer plus tard.
Comme le nombre d'extension varie, et que certain dossiers contiennent 200 fichiers, je ne veux pas garder cette fonction Textread que j'utilise actuellement !
[E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T] = textread('liste.txt',...
'%29s %29s %29s %29s %29s %29s %29s %29s %29s %29s %29s %29s %29s %29s %29s %29s');
Ça, c'est bon quand t'as seulement quelques fichiers, mais pour 200 c'est pas bon ! Surtout que la cardinalité varie....
Qu'est-ce que je peux faire pour ça !?
Merci de votre aide encore !!
khunlun
Messages postés
117
Date d'inscription
mardi 12 avril 2005
Statut
Membre
Dernière intervention
17 avril 2012
27
17 mars 2011 à 18:34
17 mars 2011 à 18:34
De rien, ça me fait plaisir ! ^^
Content d'avoir pu servir.
Si tu as des questions ou d'autres problèmes, pas de soucis.
Bonne soirée
Content d'avoir pu servir.
Si tu as des questions ou d'autres problèmes, pas de soucis.
Bonne soirée
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
julienlali
Messages postés
6
Date d'inscription
jeudi 17 mars 2011
Statut
Membre
Dernière intervention
17 mars 2011
17 mars 2011 à 18:41
17 mars 2011 à 18:41
Je me suis mal exprimé je pense, mais j'ai fait un update ...
MERCI !
MERCI !
julienlali
Messages postés
6
Date d'inscription
jeudi 17 mars 2011
Statut
Membre
Dernière intervention
17 mars 2011
17 mars 2011 à 19:07
17 mars 2011 à 19:07
Bah t'es extra toi !
T'es en train de tout résoudre mon truc !
J'ai jamais suivi de cours Matlab et les concepts exprimés dans le Help sont un peu lourd parfois...
**************************
Il me resterait finalement à assigner une variable à chaque extension.
Parce que quand j'écris:
X=currentLine
Il me sort:
X =
20063172221
X =
20063172222
X =
20063172222
....
Ainsi de suite, ne me laissant pour valeur de X que la valeur de la dernière extension.
Alors si je pouvais avoir genre
X1= 20063172221
X2=20063172222
...
Ce serait réglé !
Merci l'ami ! C'est vraiment apprécié !
T'es en train de tout résoudre mon truc !
J'ai jamais suivi de cours Matlab et les concepts exprimés dans le Help sont un peu lourd parfois...
**************************
Il me resterait finalement à assigner une variable à chaque extension.
Parce que quand j'écris:
X=currentLine
Il me sort:
X =
20063172221
X =
20063172222
X =
20063172222
....
Ainsi de suite, ne me laissant pour valeur de X que la valeur de la dernière extension.
Alors si je pouvais avoir genre
X1= 20063172221
X2=20063172222
...
Ce serait réglé !
Merci l'ami ! C'est vraiment apprécié !
khunlun
Messages postés
117
Date d'inscription
mardi 12 avril 2005
Statut
Membre
Dernière intervention
17 avril 2012
27
17 mars 2011 à 19:10
17 mars 2011 à 19:10
Si tu veux juste afficher ce qu'il y a dans le fichier, voila ce que tu peux faire
it = 1;
fid = fopen('liste.txt','r');
while ~feof(fid)
fprintf(1,'X%d = %s\n',cpt,fgetl(fid));
it = it+1;
end
fclose(fid);
Ca devrait faire le boulot je pense.
Bonne chance
it = 1;
fid = fopen('liste.txt','r');
while ~feof(fid)
fprintf(1,'X%d = %s\n',cpt,fgetl(fid));
it = it+1;
end
fclose(fid);
Ca devrait faire le boulot je pense.
Bonne chance
julienlali
Messages postés
6
Date d'inscription
jeudi 17 mars 2011
Statut
Membre
Dernière intervention
17 mars 2011
17 mars 2011 à 19:36
17 mars 2011 à 19:36
Hahah !
Exact !
J'ai changé cpt pour it et c'est top.
Je fais parcontre face à 2 problèmes:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Il me donne X1 = 20063172214 pour la première, et c'est parfait.
Il me donne X = 20063172214 pour la deuxième !
Il me donne X2 = 20063172215 pour la troisième,
Il me donne X = 20063172216 pour la quatrième !
....
J'ai donc seulement la moitié des valeurs qui ont Xi d'attribué.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Et mon autre problème, c'est que je ne peux pas invoquer X1 par la suite !
C'est comme si il l'avait juste affiché, mais qu'il n'était pas stocké ...
Super cool merci !
Exact !
J'ai changé cpt pour it et c'est top.
Je fais parcontre face à 2 problèmes:
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Il me donne X1 = 20063172214 pour la première, et c'est parfait.
Il me donne X = 20063172214 pour la deuxième !
Il me donne X2 = 20063172215 pour la troisième,
Il me donne X = 20063172216 pour la quatrième !
....
J'ai donc seulement la moitié des valeurs qui ont Xi d'attribué.
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Et mon autre problème, c'est que je ne peux pas invoquer X1 par la suite !
C'est comme si il l'avait juste affiché, mais qu'il n'était pas stocké ...
Super cool merci !
khunlun
Messages postés
117
Date d'inscription
mardi 12 avril 2005
Statut
Membre
Dernière intervention
17 avril 2012
27
17 mars 2011 à 19:44
17 mars 2011 à 19:44
Oui it et pas cpt, au temps pour moi...
Si tu veux les garder pour les utiliser dans un autre programme, tu as deux solutions.
La première est de lite le fichier liste dans ce deuxième programme pour avoir les données sous la main.
Sinon tu peux faire un truc dans le style
function res = MaFonction(inStr)
res = ''; % deux simple quote (touche 4) et pas un double (touche 3)
it = 1;
fid = fopen(inStr,'r');
while ~feof(fid)
res.x(it) = fgetl(fid);
it = it+1;
end
fclose(fid);
Ensuite, tu l'utilise comme suit
donnee = MaFonction('liste.txt');
et tu aura
donnee.x1
donnee.x2
etc
Si tu veux faire un traitement automatique, tu peux passer par fields(donnee), mais c'est une autre histoire. :)
Bonne soirée
Si tu veux les garder pour les utiliser dans un autre programme, tu as deux solutions.
La première est de lite le fichier liste dans ce deuxième programme pour avoir les données sous la main.
Sinon tu peux faire un truc dans le style
function res = MaFonction(inStr)
res = ''; % deux simple quote (touche 4) et pas un double (touche 3)
it = 1;
fid = fopen(inStr,'r');
while ~feof(fid)
res.x(it) = fgetl(fid);
it = it+1;
end
fclose(fid);
Ensuite, tu l'utilise comme suit
donnee = MaFonction('liste.txt');
et tu aura
donnee.x1
donnee.x2
etc
Si tu veux faire un traitement automatique, tu peux passer par fields(donnee), mais c'est une autre histoire. :)
Bonne soirée
julienlali
Messages postés
6
Date d'inscription
jeudi 17 mars 2011
Statut
Membre
Dernière intervention
17 mars 2011
17 mars 2011 à 20:14
17 mars 2011 à 20:14
Nope, là tu m'as perdu....
(inStr) c'est un input que t'as défini préalablement ou bien ?
Il veut rien savoir de compiler function res = MaFonction(inStr) .
Bon, je reprends.
Quand je fais ce que tu dis dans le message d'avant, j'obtiens:
X1 = 20063172214
X2 = 20063172216
X3 = 20063172219
X4 = 20063172220
X5 = 20063172221
X6 = 20063172222
X7 = 20063172223
C'est-à-dire, exactement la moitié des extensions, en sautant la première, la troisième, la cinquième, ....
Moi, je les prendrais toutes si je pouvais... (1 à 14)
Et je dois pouvoir invoquer X1 par la suite, et qu'il me sorte genre:
>> X1
X1 =
20063172214
Pas évident tout ça, j'suis complètement perdu !
Merci
(inStr) c'est un input que t'as défini préalablement ou bien ?
Il veut rien savoir de compiler function res = MaFonction(inStr) .
Bon, je reprends.
Quand je fais ce que tu dis dans le message d'avant, j'obtiens:
X1 = 20063172214
X2 = 20063172216
X3 = 20063172219
X4 = 20063172220
X5 = 20063172221
X6 = 20063172222
X7 = 20063172223
C'est-à-dire, exactement la moitié des extensions, en sautant la première, la troisième, la cinquième, ....
Moi, je les prendrais toutes si je pouvais... (1 à 14)
Et je dois pouvoir invoquer X1 par la suite, et qu'il me sorte genre:
>> X1
X1 =
20063172214
Pas évident tout ça, j'suis complètement perdu !
Merci
khunlun
Messages postés
117
Date d'inscription
mardi 12 avril 2005
Statut
Membre
Dernière intervention
17 avril 2012
27
18 mars 2011 à 11:03
18 mars 2011 à 11:03
Je ne comprend ce que tu veux dire par compiler ?
Tu as des trucs soulignés en rouge ?
Tu créé un fichier MaFonction.m contenant les lignes suivantes:
function res = MaFonction(inStr)
it = 1;
fid = fopen(inStr,'r');
while ~feof(fid)
str = sprintf('x%d',it);
res.(str) = fgetl(fid);
it = it+1;
end
fclose(fid);
Ensuite dans la console tu tapes
>> donnee=MaFonction('liste.txt');
>> donnee.x1
Ca ne marche pas ?
J'ai testé de mon côté et ça marche
Si tu as un soucis, je t'enverrai ca par mail
Bonne journée
Tu as des trucs soulignés en rouge ?
Tu créé un fichier MaFonction.m contenant les lignes suivantes:
function res = MaFonction(inStr)
it = 1;
fid = fopen(inStr,'r');
while ~feof(fid)
str = sprintf('x%d',it);
res.(str) = fgetl(fid);
it = it+1;
end
fclose(fid);
Ensuite dans la console tu tapes
>> donnee=MaFonction('liste.txt');
>> donnee.x1
Ca ne marche pas ?
J'ai testé de mon côté et ça marche
Si tu as un soucis, je t'enverrai ca par mail
Bonne journée