Lire un fichier texte sur matlab
dragonbleu82dl
Messages postés
4
Statut
Membre
-
youva -
youva -
Salam
J'ai un petit problem pour lire le fichier si desous sur matlab, en fait j'ai besoin que des deux matrices, et si je lesse que les nombres et j'efface l'ecriture avec la commande load il ne me donne pas les chiffres apres les virgules.
Merci beaucoup.
National Instruments Oscilloscope 1.0a1 Data
Date Created: 02/06/06 03:29:02 PM
USER NAME:
COMMENTS:
WAVEFORM NAME:
START DATA
0,000000E+0 -3,973411E-1
1,000000E-3 -4,428123E-1
2,000000E-3 -4,678367E-1
3,000000E-3 -3,240989E-1
END DATA
WAVEFORM NAME:
START DATA
0,000000E+0 1,712339E+0
1,000000E-3 9,707619E-1
2,000000E-3 2,486875E+0
3,000000E-3 2,233864E-1
END DATA
J'ai un petit problem pour lire le fichier si desous sur matlab, en fait j'ai besoin que des deux matrices, et si je lesse que les nombres et j'efface l'ecriture avec la commande load il ne me donne pas les chiffres apres les virgules.
Merci beaucoup.
National Instruments Oscilloscope 1.0a1 Data
Date Created: 02/06/06 03:29:02 PM
USER NAME:
COMMENTS:
WAVEFORM NAME:
START DATA
0,000000E+0 -3,973411E-1
1,000000E-3 -4,428123E-1
2,000000E-3 -4,678367E-1
3,000000E-3 -3,240989E-1
END DATA
WAVEFORM NAME:
START DATA
0,000000E+0 1,712339E+0
1,000000E-3 9,707619E-1
2,000000E-3 2,486875E+0
3,000000E-3 2,233864E-1
END DATA
6 réponses
-
Bonjour,
Voici une petite fonction pour lire ton fichier brut :
function WaveFrms = ReadWaveFormeFile( FileName )
Tampon=[];
wf=0;
pfin = fopen( FileName );
if pfin > 0
while ~feof(pfin)
Ligne = fgetl(pfin);
if strcmp(Ligne,'START DATA')
wf= wf+1;
Ligne = fgetl(pfin); % Sauter la ligne vide
Ligne = fgetl(pfin); % Lire la premiere ligne
while ~strcmp(Ligne,'END DATA')
Ligne = strrep(Ligne,',','.');
Tampon=vertcat(Tampon,str2num(Ligne));
Ligne = fgetl(pfin);
end
WaveFrms{wf} = Tampon; % Sauvegarder la matrice
Tampon=[]; % Reinitialiser le tampon
end
end
fclose(pfin);
end
Utilisation :
R=ReadWaveFormeFile('mat1.txt')
Acces aux matrice :
R{1}
ans0 -0.3973
0.0010 -0.4428
0.0020 -0.4678
0.0030 -0.3241
R{2}
ans
0 1.7123
0.0010 0.9708
0.0020 2.4869
0.0030 0.2234
R{n} si plus de matrice.
J'espères avoir répondu à ton attente
Bon courage
Creativo
NB : Désoler pour la mise en forme pas de concervation de la tabulation lors du copier coller-
-
-
Non, je n'ai pas réussi a me servir de cette fonction tel quel mais j'ai réussi a faire, ce que je voulais en m'en inspirant.
Dans mon cas:
%% Ouverture des fichiers
FichierOutput = fopen('Output.txt','w'); FichierInput = fopen('Input.txt','r');
%% Tant qu'on est pas a la fin du fichier
Ligne = fgetl(FichierInput);
while ~feof(FichierInput)
if strcmp(Ligne,'Datum1')
%Lecture du datum1
Tampon=[];
while ~strcmp(Ligne,'Datum2') Ligne = fgetl(FichierInput); Tampon=vertcat(Tampon,str2num(Ligne));end
datum1 = Tampon;
%Lecture du datum2
Tampon=[];
while ~strcmp(Ligne,'Datum1') Ligne = fgetl(FichierInput); Tampon=vertcat(Tampon,str2num(Ligne));end
datum2 = Tampon;
% Appel la fonction getParameters avec Scale=1
[tp,ac,tr] = getParameters(datum2,datum1,1);
% Metres en Millimetres
Parametres(1)=tp(1)*1000; Parametres(2)=tp(2)*1000; Parametres(3)=tp(3)*1000;
% Rad en degrés
Parametres(4)=tp(4)/pi*180; Parametres(5)=tp(5)/pi*180; Parametres(6)=tp(6)/pi*180;
% Ecrire les paramtres dans fichier
fprintf(FichierOutput,'%d\t %d\t %d\t %d\t %d\t %d\t %d\n',Parametres);%Parametres
end
end
%% Fermeture des fichiers
fclose(FichierInput); fclose(FichierOutput); -
-
-
-
salut.
Pas clair ton explication.
essai de remplacer les ',' par des '.'
et de refaire un "load" -
Merci j'ai remplacé les ',' par des '.' mais il ne me donne toujours pas les chiffres apres la virgule
-
Merci j'ai remplacé les ',' par des '.' mais il ne me donne toujours pas les chiffres apres la virgule
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Je ne sais pas trop...
tape "1.001E+3" dans matlab pour voir si il te prend bien les virgules en compte.
sinon, j'ai une autre technique pour charger les matrices.
tu met A=[ au début, et ]; à la fin.
En plus, un load avec deux matrices distinct, dans un même fichier, et sans texte, je ne suis pas sur que ça soit possible.
Ensuite, est tu sur que ce n'es pas un problème d'affichage des nombre.
genre, si pour 20001 il t'écris 2e4, essai de lui faire afficher:
(20001-20000)
A+ -
oue c bon merci. C t un probleme de caractere d'espace présent dans le programme. donc il ne pouvai pa detecter la condition de comparaison pour rentrer dans la boucle if. Merci pour tout c gentil