Bonjour à tous,
Etant débutant sur Matlab je viens solliciter votre aide afin de réaliser un petit exercice que l'on m'a imposé avec Matlab .
Voici le fichier que je dois traiter, je ne met pas tout le fichier mais uniquement une partie.
J'ai toujours le format suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 $TITLE = 1 $SUBTITLE= 2 $LABEL = GEN1 SINE Y 3 $ELEMENT FORCES 4 $REAL-IMAGINARY OUTPUT 5 $SUBCASE ID = 2 6 $ELEMENT TYPE = 102 7 $FREQUENCY = 0.1000000E+00 8 2004780 8.460129E+00 3.116020E+01 -4.992444E+00 9 -CONT- 3.376748E-02 1.194521E-02 1.147030E-02 10 -CONT- -5.646761E-04 -2.056223E-03 4.725998E-04 11 -CONT- -1.221153E-06 -1.105105E-06 -5.033929E-07 12 2004781 5.943194E+01 -5.398119E+01 1.936476E+01 13 -CONT- -1.193319E-01 -2.677261E-02 -7.273302E-03 14 -CONT- -3.392528E-03 2.779730E-03 -1.074120E-03 15 -CONT- 6.878287E-06 1.821335E-06 3.814517E-07 16 $TITLE = 217 $SUBTITLE= 218 $LABEL = GEN1 SINE Y 219 $ELEMENT FORCES 220 $REAL-IMAGINARY OUTPUT 221 $SUBCASE ID = 2 222 $ELEMENT TYPE = 102 223 $FREQUENCY = 0.1100000E+01 224 2004780 8.462952E+00 3.117000E+01 -4.994934E+00 225 -CONT- 3.377128E-02 1.194957E-02 1.147191E-02 226 -CONT- -6.216708E-03 -2.263430E-02 5.203316E-03 227 -CONT- -1.342868E-05 -1.216769E-05 -5.537162E-06 228 2004781 5.944707E+01 -5.399313E+01 1.936950E+01 229 -CONT- -1.193590E-01 -2.678180E-02 -7.276726E-03 230 -CONT- -3.734062E-02 3.059453E-02 -1.182347E-02 231 -CONT- 7.570247E-05 2.004600E-05 4.199069E-06 232 2004782 8.337305E+00 -3.896556E+01 -7.908681E-01 233 -CONT- -4.509930E-02 -2.169449E-03 -1.774519E-01 234 -CONT- -4.957831E-03 2.271831E-02 6.993966E-05 235 -CONT- 2.199370E-05 3.843620E-06 1.088603E-04 236 2004783 -6.111114E+01 -5.361680E+01 -2.262869E+01 237
Une en-tête qui va de $TITLE à $FREQUENCY dans laquelle je dois récupérer la valeur après le $FREQUENCY = <valeur_de_fréquence_à_récupérer>
Ensuite pour chaque ligne commençant par un ID (exemple : 2004780) je dois récupérer les 3 valeurs qui sont sur la même ligne.
Enfin lorsque la ligne commence par -CONT- je dois récupérer les 3 valeurs qui suivent mais uniquement pour la deuxième ligne -CONT- rencontré.
Ma question est la suivante, comment procédez vous pour lire un fichier qui contient plusieurs en-têtes ?
je sais qu'il existe plusieurs façon pour lire un fichier j'ai étais faire un tour dans la FAQ mais je n'arrive pas à adapter à mon cas.
Une idée que j'ai eu, mais je sais pas si c'est la meilleure serait de parcourir le fichier et au fur et à mesure créer un fichier par bloc : en-tête + valeurs, pour ensuite traiter chaque fichiers indépendamment.
Merci d'avance pour votre aide.
Partager