Lecture d'un fichier texte sous matlab.

Fermé
safae - 21 mars 2011 à 16:34
 safae - 23 mars 2011 à 11:17
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
A voir également:

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
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
0
merci beaucoup pour votre aide,
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>');
0