Répondre à la discussion
Affichage des résultats 1 à 8 sur 8

Modifier un fichier texte avec MATLAB



  1. #1
    bouigs

    Modifier un fichier texte avec MATLAB


    ------

    Bonjour,
    je souhaite modifier des fichiers enrigistrés en .txt à l'aide de matlab (un exemple est donné dans le document "Etat_Initial").

    Ce que je souhaite, c'est supprimer tous les sauts de lignes et tout le texte dans chacun de mes fichiers, afin de garder que les données numériques (un exemple est donné dans le document "Etat_Final").

    Je souhaite automatiser cette opération car mes fichiers sont très long.

    Bouigs

    -----
    Fichiers attachés Fichiers attachés

  2. Publicité
  3. #2
    Bruno

    Re : Modifier un fichier texte avec MATLAB

    Bonjour,

    Pour automatiser cela, il faut qu'il y ait une certaine constance dans les fichiers générés afin de pouvoir supprimer le texte.

    Une fois que tu as supprimé tout le texte, tu peux t'attaquer aux retours àa la ligne.

    Pour le retour à la ligne, il faut supprimer certains retours charriots (expression \n que tu ne vois pas et qui correspond à un retour à la ligne). Si tu les supprimes tous, tu auras un texte suivit. Il faut donc remplacer tous les doubles retours charriots par un seul (\n\n devient \n). Remarque qu'il faut aussi prévoir les cas où un triple retour existe.

    C'est facilement programmable en PHP. Je sais qu'il existe aussi un programme qui permet de faire cela, mais je ne le retrouve plus...

  4. #3
    le fatumbi

    Re : Modifier un fichier texte avec MATLAB

    l'expression régulière (regex) pour le chercher / remplacer qui va bien doit être du style:
    'supprimer toute ligne contenant (au moins une lettre sauf "E")
    soit :
    ^.*[A-D,F-Z]+.*$

    puis supprimer les lignes vides : ^[" "]*\n[" "]*\n
    par \n

    matlab doit savoir faire tout ça assez bien, de mémoire.
    sinon la 1ere regex fonctionne bien sous emacs sur les exemples.

  5. #4
    bouigs

    Re : Modifier un fichier texte avec MATLAB

    Bruno et Le fatumbi, merci pour vos conseils...

    Bouigs

  6. A voir en vidéo sur Futura
  7. #5
    AyaFatima

    Re : Modifier un fichier texte avec MATLAB

    Citation Envoyé par bouigs Voir le message
    Bruno et Le fatumbi, merci pour vos conseils...

    Bouigs
    Bonjour,
    j'ai vraiment le même problème que le votre, j'ai essayé de le résoudre mais je n'ai pas pu, si vous pouvez m'aider!?

  8. #6
    bouigs

    Re : Modifier un fichier texte avec MATLAB

    J'ai répondu à la question que tu m'as envoyé par mp, mais je mets au passage les infos importantes sur le forum.

    Ce nettoyage de fichier est en fait assez simple quand on connait les fonctions à employer

    Il suffit de lire ligne par ligne ton fichier d'entrée avec un while ~feof, puis de récupérer chaque ligne par un fgetl, et vérifier si cette ligne est vide avec un petit isempty. Si cette ligne n'est pas ligne, tu la copies dans un fichier de sortie (que tu auras créé au préalable avec fopen).

    Et hop ! Le tour est joué

    Bouigs

  9. Publicité
  10. #7
    superpiot04

    Re : Modifier un fichier texte avec MATLAB

    Bonjour,
    Il me faut, pour un projet, transformer un fichier Hspice(provenant d'un outil de simulation: TNT), en un fichier Pspice(.lib lisible sous CADENCE).
    Pour cela, je dois récupérer des valeurs placées sous cette forme dans un fichier texte:

    7.78018e-007
    3.87111e-007 7.75981e-007
    3.81248e-007 6.79093e-007 7.73383e-007
    ou
    1.93294e-011
    -5.63099e-012 6.34777e-011
    la taille des matrices pouvant varier. Les valeurs sont séparées par des tabulations.
    Me mettre à la bonne ligne dans le fichier n'est pas un problème, et j'arrive à récupérer chacun des caractères.

    J'aimerais donc enregistrer ces valeurs dans des matrices intermédiaires pour pour voir les réécrire dans un ordre spécifique dans un second fichier.
    Voici mon code ainsi que mes commentaires:

    mat = zeros(nb_lignes, nb_lignes); % matrice intermédiaire
    for i=1:nb_lignes %nombre de lignes de la matrice à récupérer
    for(t=1:length(tline)) % Longueur de la ligne
    compteur = 1;
    if((tline(t)~=' ')) % Si la ligne n'est pas vide
    concat = cat(2,concat,tline(t)); % Je concatène mes
    % caractères
    if((tline(t)==' ')) %Lorsque je rencontre une tabulation
    !!! mat(i, compteur) = concat(); % j'écris concat dans mat
    compteur = compteur + 1; % j'avance d'une colonne
    % dans ma matrice
    concat = zeros(1,1); % je réinitialise concat
    end
    end
    end

    !!! voici la ligne à problème. Pour 3 lignes, je cherche à écrire ca:
    [a 0 0] avec a=7.78018e-007
    [b c 0]
    [d e f ]

    Mais j'obtiens cela:
    [7 . 7 8 0 1 8 e - 0 0 7 0 0]
    [ ... ]
    [ ... ]

    La fonction cat me crée une matrice d'autant d'éléments qu'il y a de caractères dans la ligne. Je n'en veux que trois (pour l'exemple).
    Je cherche donc une fonction ou algorithme me permettant de récupérer les caractères les uns après les autres et les stocker à la MÊME PLACE dans la matrice jusqu'à obtenir une tabulation pour écrire à la case d'après.

    J'espère avoir été assez clair. Tout commentaire est le bienvenu
    Un grand merci à quiconque pourrait m'aider.
    Pierre

  11. #8
    superpiot04

    Re : Modifier un fichier texte avec MATLAB

    On dit toujours qu'écrire son problème permet de mieux le comprendre.
    Problème résolu
    Je donne la solution pour ceux qui se poseraient la même question, car il n'y a rien de pire que de trouver le bon forum sans réponse derrière.

    Regarder la doc MATLAB à "strtok" qui permet de stocker dans une variable unique des chaines de caractères jusqu'à un point voulu dans une ligne.
    Il suffit d'utiliser ensuite strnum qui convertit une chaine (ASCII) en valeur numérique.
    Et le tour est joué

Discussions similaires

  1. lire un fichier avec Matlab
    Par marionsmiley dans le forum Mathématiques du supérieur
    Réponses: 4
    Dernier message: 22/12/2013, 12h36
  2. Ecrire des donnees dans un fichier .txt avec MATLAB
    Par ghislaine dans le forum Logiciel - Software - Open Source
    Réponses: 9
    Dernier message: 24/10/2011, 16h03
  3. modifier un texte scanné
    Par goundroune dans le forum Logiciel - Software - Open Source
    Réponses: 10
    Dernier message: 30/11/2006, 20h47
  4. Fichier WAV avec simulink(matlab)
    Par Kit dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 12/05/2006, 08h09
  5. Lecture d un fichier avec matlab
    Par Julian5962 dans le forum Logiciel - Software - Open Source
    Réponses: 6
    Dernier message: 05/07/2004, 15h03
Découvrez nos comparatifs produits sur l'informatique et les technologies.