Pour mon stage, je dois réaliser un programme qui permet d'importer des fichiers famos .dat dans Matlab
ces fichiers sont de la forme
|CF,2,1,1;|CK,1,3,1,1;
|NO,1,7,1,0,,0,;
|CG,1,5,1,1,1;
|CD,1,16,2E-2,1,1,s,0,0,0;
...
Chaque clé |XX permet d'identifier la caractéristique en question.
la clé |CG définit un groupe de données.
J'aimerais que le programme trouve chaque clé |CG, et enregistre les données qui suivent dans une cellule de la variable a2, jusquà ce qu'il rencontre la clé |CS, qui cloture le fichier.
Pour cela j'ai créé une fonction read(key,fid), qui trouve la clé key et copie les données de key dans une structure L
function [L]= read(key,fid)
% file = 'C:\Documents and Settings\p-sun\My Documents\MATLAB\IMC2Matlab\2009-12-0816-30-00.dat';
% fid=fopen(file,'r','b');
temp = fread(fid,[1,3],'*char');
while (strcmp(temp,key) ==0)
fseek(fid,-2,'cof');
temp = fread(fid,[1,3],'*char');
end;
% if temp == key
Puis dans la fonction principale famosread, j'ai voulu utilisé une boucle while pour dire que: tant qu'on n'a pas atteint la clé CS, exécute les commandes suivantes
Voici le code
L= read('|CG',fid);
l=1;
while strcmp(L{1,1},'|CS') ==0
a2(l).AnzahlKomponenten = L{1,4};
L= read('|CN',fid);
if L{1,4}==0
a2(l).IndexGruppe = 'Keiner Gruppe zugeordnet';
else a2(l).IndexGruppe = L{1,4};
end;
a2(l).IndexGruppe;
a2(l).IndexBit = L{1,5};
Titel = L{1,8};
a2(l).L=L;
L= read('|CG',fid);
l=l+1;
end;
Mais à chaque fois que j'exécute le programme, Matlab affiche Busy et ne répond pas
Quelqu'un voit une solution?
PS: J'ai déjà eu des problèmes à cause du format du fichier famos dans lequel chaque clé occupe une ligne, ce qui pourrait laisser des espaces entre les clés, et posent des problèmes à la commande fread
je ne sais pas si le problème viendrait par là...
Merci,