Lire un fichier texte sur matlab - Forum Matlab

A voir également:Lire un fichier texte sur matlabLire un fichier texte en matlab - Forum - Logiciels Lire un fichier texte - Articles Lire un fichier texte en java ✓ - Forum - Java Lecture de fichier texte avec matlab ✓ - Forum - Matlab Lire un fichier csv avec matlab ✓ - Forum - Matlab

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

Forum

A voir également:Lire un fichier texte sur matlabLire un fichier texte en matlab - Forum - Logiciels Lire un fichier texte - Articles Lire un fichier texte en java ✓ - Forum - Java Lecture de fichier texte avec matlab ✓ - Forum - Matlab Lire un fichier csv avec matlab ✓ - Forum - Matlab

Web: www.shapebootstrap.net

13 réponses

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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}

ans

0 -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

Merci creativo 7

Avec quelques mots c'est encore mieux Ajouter un commentaire

CCM a aidé 28068 internautes ce mois-ci

Reply
réponses:
  • auteur

  • auteur

    Salut,

    Merci pour ce code, il peut m'être utile aussi mais des que j'appelle ta fonction il me reporte une erreur

    Error in ==> Lire at 3
    Tampon=[];

    Peux-tu m'aider?

    Merci.

  • auteur

    Salut,
    je suis dans le mem ca que toi, peut tu me dir si tu a trouver une solution pour ce probleme
    merci

  • auteur

    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);

  • auteur

    Merci beaucoup,
    je v essayer ça demain au boulot,
    ++

  • auteur

    Salut,
    j'ai un probleme pour ton prog. il ne copie rien dans Output. De plus je ne vois ce que c Datum1 et 2 ça se situe ou dans ton texte? ou si tu peut me passer le fichier à copier? Merki

  • auteur

    Salut,

    Oui je t'ai donné mon code en tant qu'exemple, celui ci sert a stocker des series de deux matrices qui sont entrée dans un fichier 'input' comme ceci:

    Datum1
    0 1 2
    3 4 5
    6 7 8
    Datum2
    1 2 3
    4 5 6
    7 8 9
    Datum1
    3 4 5
    6 7 8
    1 2 3
    Datum2
    1 2 3
    4 5 6
    7 8 9
    Datum1

    Dit moi ce que tu veux faire exactement si tu n'y arrive pas,

    Pascal.

  • auteur

    merci pour ta repense

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

salut.
Pas clair ton explication.
essai de remplacer les ',' par des '.'
et de refaire un "load"

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Merci j'ai remplacé les ',' par des '.' mais il ne me donne toujours pas les chiffres apres la virgule

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Merci j'ai remplacé les ',' par des '.' mais il ne me donne toujours pas les chiffres apres la virgule

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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+

Reply

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

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

Reply

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed