- ven. 11 janv. 2013 13:14
#39083
Bonjour,
J’essaie d utiliser GNU Octave depuis dix jours dans le but de lire tous les colonnes d’un document (.txt) avec 'textscan' mais je n'y parviens pas.
Le document que j essaie de lire a la structure suivante:
"
4 = Interface Serial-No :
5 = Calibrated by :
6 = Radiation Quality :
7 = Measuring Quantity :
[Kanal_Info]
;Kanal-Nr. = Status(Aktiv/Inaktiv);A/D-Kanal(1-4);IF-KanalNr;X_0;Y_0;K-Faktor;"Bemerkung"
0 = Aktiv;1;0;-126;0;1.021;""
1 = Aktiv;1;1;-123;0;1.021;""
2 = Aktiv;1;2;-120;0;1.021;""
3 = Aktiv;1;3;-117;0;1.021;""
4 = Aktiv;1;4;-114;0;1.021;""
5 = Aktiv;1;5;-111;0;1.021;""
6 = Aktiv;1;6;-108;0;1.021;""
7 = Aktiv;1;7;-105;0;1.021;""
8 = Aktiv;1;8;-102;0;1.021;""
9 = Aktiv;1;9;-99;0;1.021;""
10 = Aktiv;1;10;-96;0;1.021;""
..."
Et le code que j'utilise à présent est le suivant:
"
function error_code = Test2
fid2 = fopen('C:\Users\brico\Desktop\slow.txt');
txt = '';
while ~strcmp(txt, ';Kanal-Nr. = Status(Aktiv/Inaktiv);A/D-Kanal(1-4);IF-KanalNr;X_0;Y_0;K-Faktor;"Bemerkung"')
txt = fgetl(fid2);
end
B = textscan(fid2, '%f = %s%f%f%f%f%f%s', 'delimiter', ';', 'MultipleDelimsAsOne', 1);
fclose(fid2);
x_array_in_mm = B{5};
y_array_in_mm = B{6};
property = B{2};
AD_kanal = B{3};
IF_kanal = B{4};
Bemerkung = B{8};
x_dist_in_mm = 10;
y_dist_in_mm = 10;
num_pos = length(x_array_in_mm);
result = -ones(num_pos, 1);
x_array_in_mm
y_array_in_mm
property
..."
Quand je démarre le code sur la fenêtre de commande, j’obtient par la suite des résultats inattendus : x .
Un appercue de mon résultat est le suivant:
"
octave-3.6.2.exe:Test2
warning: strread: literal '-' (fmt spec #2) does not match dataaves
x_array_in_mm =t in distinct columns.
-126.00000
1.02100
NAN
4.00000
0.00000000
NAN
1.000000
-99.00000
1.021000
y_array_in_mm
0.00000000
NAN
1.000000
-114.000000
1.02100
NAN
8.00000
0.000000
NAN
......"
Je prie de tout cœur que quelqu'un du forum puisse m' aider.
Merci pour votre attention
brico
J’essaie d utiliser GNU Octave depuis dix jours dans le but de lire tous les colonnes d’un document (.txt) avec 'textscan' mais je n'y parviens pas.
Le document que j essaie de lire a la structure suivante:
"
4 = Interface Serial-No :
5 = Calibrated by :
6 = Radiation Quality :
7 = Measuring Quantity :
[Kanal_Info]
;Kanal-Nr. = Status(Aktiv/Inaktiv);A/D-Kanal(1-4);IF-KanalNr;X_0;Y_0;K-Faktor;"Bemerkung"
0 = Aktiv;1;0;-126;0;1.021;""
1 = Aktiv;1;1;-123;0;1.021;""
2 = Aktiv;1;2;-120;0;1.021;""
3 = Aktiv;1;3;-117;0;1.021;""
4 = Aktiv;1;4;-114;0;1.021;""
5 = Aktiv;1;5;-111;0;1.021;""
6 = Aktiv;1;6;-108;0;1.021;""
7 = Aktiv;1;7;-105;0;1.021;""
8 = Aktiv;1;8;-102;0;1.021;""
9 = Aktiv;1;9;-99;0;1.021;""
10 = Aktiv;1;10;-96;0;1.021;""
..."
Et le code que j'utilise à présent est le suivant:
"
function error_code = Test2
fid2 = fopen('C:\Users\brico\Desktop\slow.txt');
txt = '';
while ~strcmp(txt, ';Kanal-Nr. = Status(Aktiv/Inaktiv);A/D-Kanal(1-4);IF-KanalNr;X_0;Y_0;K-Faktor;"Bemerkung"')
txt = fgetl(fid2);
end
B = textscan(fid2, '%f = %s%f%f%f%f%f%s', 'delimiter', ';', 'MultipleDelimsAsOne', 1);
fclose(fid2);
x_array_in_mm = B{5};
y_array_in_mm = B{6};
property = B{2};
AD_kanal = B{3};
IF_kanal = B{4};
Bemerkung = B{8};
x_dist_in_mm = 10;
y_dist_in_mm = 10;
num_pos = length(x_array_in_mm);
result = -ones(num_pos, 1);
x_array_in_mm
y_array_in_mm
property
..."
Quand je démarre le code sur la fenêtre de commande, j’obtient par la suite des résultats inattendus : x .
Un appercue de mon résultat est le suivant:
"
octave-3.6.2.exe:Test2
warning: strread: literal '-' (fmt spec #2) does not match dataaves
x_array_in_mm =t in distinct columns.
-126.00000
1.02100
NAN
4.00000
0.00000000
NAN
1.000000
-99.00000
1.021000
y_array_in_mm
0.00000000
NAN
1.000000
-114.000000
1.02100
NAN
8.00000
0.000000
NAN
......"
Je prie de tout cœur que quelqu'un du forum puisse m' aider.
Merci pour votre attention
brico