Bonjour à tous,
J'ai quelques soucis avec la manipulation de texte sous matlab, j'espère que vous pourrez m'aider.
Je dispose d'un fichier dans lequel j'ai écrit le résultat d'un traitement de données. Ces résultats sont écrits sous la forme suivante:
t1 a1 b1 c1...
t2 a2 b2 c2...
...
tn an bn cn
A un moment, un problème sur les données traitées m'oblige a sauter un certain nombre de lignes jusqu'à pouvoir retrouver des données utilisables. Une fois que j'ai ces données, je voudrais faire une sorte de "reverse engineering" afin de remonter dans mon fichier texte et de réécrire les données que j'avais sauté.
Une petit dessin étant mieux qu'un long discours, voici l'état de mon fichier à l'heure actuelle ('\n' signifiant que j'ai juste un retour à la ligne sur la ligne en question):
t1 a1 b1 c1...
t2 a2 b2 c2...
...
tn an bn cn...
\n
\n
\n
tm am bm cm...
Et je voudrais donc réecrire les lignes au dessus afin d'avoir ça:
t1 a1 b1 c1...
t2 a2 b2 c2...
...
tn an bn cn...
tn+1 an+1 bn+1 cn+1
tn+2 an+2 bn+2 cn+2
tn+3 an+3 bn+3 cn+3
tm am bm cm...
j'ai donc essayé le code suivant:
Code:fid=fopen('text.txt','wt'); ... %inscription des données jusqu'à la ligne m (il y a donc eu les sauts de ligne) pos=ftell(fid)-L; %récupération de la position actuelle du curseur, % qui est à la fin de la ligne m. Il y a L caractères sur cette ligne, je les % enlève donc afin de me retrouver au début de la ligne. for p=0:4 fseek(fid,pos-p*2,'bof'); %placement du curseur au début de la ligne d'au dessus fprintf(fid,'%f\t',data_to_be_printed); end
Résultat:
si j'ai choisit le mode d'ouverture du fichier 'wt', l'inscription d'une ligne écrit par dessus les lignes qui suivent.
Si je choisis le mode d'ouverture 'at', il ne m'est simplement pas possible de remonter dans le fichier, les lignes sont ajoutées à la fin de celui-ci.
Y-a-t'il un troisième mode d'ouverture que j'aurai raté, ou auriez vous une méthode miracle à me proposer ?
Merci d'avance!
-----