Lecture d'un fichier texte sous matlab.
Fermé
Bonjour,
je voudrais crée un programme qui me lit les données d'un fichier texte et qui stocke toutes les données de ce fichier dans une structure sachant que j'ai utilisé pour l'ecriture du fichier texte la syntaxe xml. exemp:<propriete>min;max;<\propriete>.
merci d'avance pour votre aide
je voudrais crée un programme qui me lit les données d'un fichier texte et qui stocke toutes les données de ce fichier dans une structure sachant que j'ai utilisé pour l'ecriture du fichier texte la syntaxe xml. exemp:<propriete>min;max;<\propriete>.
merci d'avance pour votre aide
A voir également:
- Lecture d'un fichier texte sous matlab.
- Fichier bin - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier rar - Guide
- Fichier .dat - Guide
1 réponse
khunlun
Messages postés
117
Date d'inscription
mardi 12 avril 2005
Statut
Membre
Dernière intervention
17 avril 2012
27
22 mars 2011 à 08:35
22 mars 2011 à 08:35
Bonjour
Y aurait-il un oubli ?
exemp:<propriete>;min;max;<\propriete>
Si oui, ca simplifierais grandement les choses.
function res = MaFonction(inStr)
fid = fopen(inStr,'r');
while ~feof(fid)
currentLine = fgetl(fid);
ind = strfind(currentLine, ';');
currentField = currentLine(1,1:ind(1,1)-1);
res.(currentField).min = str2double(currentLine(1,ind(1,1)+1:ind(1,2)-1));
res.(currentField).max = str2double(currentLine(1,ind(1,2)+1:ind(1,3)-1));
end
fclose(fid);
Avec la commande suivante
data = MaFonction('monFichier.txt');
data est une structure contenant les propriétés.
Ces propriétés ayant deux champs min et max.
Pour accéder à une valeur, la sintaxe est :
data.temperature.min (par exemple)
Bonne journée
Y aurait-il un oubli ?
exemp:<propriete>;min;max;<\propriete>
Si oui, ca simplifierais grandement les choses.
function res = MaFonction(inStr)
fid = fopen(inStr,'r');
while ~feof(fid)
currentLine = fgetl(fid);
ind = strfind(currentLine, ';');
currentField = currentLine(1,1:ind(1,1)-1);
res.(currentField).min = str2double(currentLine(1,ind(1,1)+1:ind(1,2)-1));
res.(currentField).max = str2double(currentLine(1,ind(1,2)+1:ind(1,3)-1));
end
fclose(fid);
Avec la commande suivante
data = MaFonction('monFichier.txt');
data est une structure contenant les propriétés.
Ces propriétés ayant deux champs min et max.
Pour accéder à une valeur, la sintaxe est :
data.temperature.min (par exemple)
Bonne journée
23 mars 2011 à 11:17
non non il n'y a pas d'oubli
je suis debutante et je n'y arrive pas trop.
voilà un exemple d'un code que j'ai fait je voudrai extraire de la variable tline (signal et calib)
pour les stocker aprés dans une structure pour l'instant je voudrai qu'il y'ait que ça dans var j'ai essayé d'utiliser la variable tline pour me simplifier la tache au lieu de lire tout le fichier texte avant d'implementer ça dans mon code qui lit le fichier text et avec la structure que j'ai crée dans mon code j'arrive à extraire tout ce qu'il y'a entre <TYPE_PROPERTIES></TYPE_PROPERTIES> par contre ça s'affiche ainsi
{'Format;#;State;#;Size;#;Unit;#;Min;#;Max;#;Resol;#;Accuracy;#;BlockPath'} et moi je veux que chaque donnée soit affiché dans une cellule. j'esper que j'ai été suffisemment clair. essayer de m'aider svp je suis debutante en matlab.
tline = '<TYPE>Signal <TYPE>Entrée <TYPE_PROPERTIES>Format;#;State;#;Size;#;Unit;#;Min;#;Max;#;Resol;#;Accuracy;#;BlockPath</TYPE_PROPERTIES></TYPE></TYPE><TYPE>calib<TYPE>calibration<TYPE_PROPERTIES>Format;#;State;#;Size;#;Unit;#;Min;#;Max;#;Resol;#;Accuracy;#;BlockPath</TYPE_PROPERTIES><\TYPE><\TYPE>';
num=1;
for i=1:numel(tline)
a = strfind(tline,'<TYPE>');
a = a(i)+length('<TYPE>');
%idxstrt = [idxstrt(i) length(tline)];
b = strfind(tline,'<TYPE>');
b= b(i+1)+length('<TYPE>');
num=num+1;
var = tline(a:(b-length('<TYPE>')-1))
end
end
voilà ce qui s'affiche quand j'excute ce code moi je veux qu'il n'yait que signal et calib
var =
Signal
var =
Entrée <TYPE_PROPERTIES>Format;#;State;#;Size;#;Unit;#;Min;#;Max;#;Resol;#;Accuracy;#;BlockPath</TYPE_PROPERTIES></TYPE></TYPE>
var =
calib
??? Attempted to access b(5); index out of bounds because numel(b)=4.
Error in ==> exemple at 13
b= b(j+1)+length('<TYPE>');