IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MATLAB Discussion :

Ecrire dans un fichier


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 83
    Par défaut Ecrire dans un fichier
    mon probleme est le suivant
    je vais devoir lancer mon programme 40 fois et a chaque fois je stocke dans une matrice m environ 17 valeurs (reelles)

    j'ai le code 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
    %nettoyage
    clear
    clc
    warning('off','MATLAB:dispatcher:InexactMatch')
     
    %boite de dialogue,selection des 2 signaux
    [nom,acces] = uigetfile('*.wav','Selectionner un fichier wav');
     
    [y,fe,bits]=wavread(nom,6000000);
    fs=3000;
    x=resample(y,fs,fe); 
    x=x(:,1);
    n=length(x);
    [cA,cD]=dwt(x,'sym6');
    coeff=[cA;cD];
    l=length(coeff);
    S=floor(abs(log2(l)))
    for i = 1:S
       ind=(l/(-1+2^i));
       m(i)=sum(abs(coeff(1:ind))); 
    end
    m contient 17 valeurs réelles
    est ce possible de les faire afficher dans un fichier
    ensuite de relancer le programme, afficher les nouvelles valeurs de m sur la ligne suivante,........et de recuperer le fichier une fois que j'aurai lancé le nombre de fois souhaité mon code


    merci

  2. #2
    Membre émérite
    Avatar de rostomus
    Homme Profil pro
    Doctorant électronique et traitement du signal
    Inscrit en
    Décembre 2006
    Messages
    791
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant électronique et traitement du signal

    Informations forums :
    Inscription : Décembre 2006
    Messages : 791
    Par défaut
    Salut,

    Je te propose de voir les fonctions:
    • fopen
    • fprintf
    • fclose


    bon courage

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 83
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    freq=(0:n-1)/n*fs-fs/2;
    idx=freq>300 & freq <800;
    s1=20*log10(abs(fft(signal)));
    spart = s1(idx);
    length(spart)
    fichier=fopen('valeur.xls','w');
    fprintf(fichier,'%d ',spart);
    fclose(fichier)
    j'obtiens un fichier xls sur plusieurs lignes
    mopi j'aimerias avoir toutes les valeurs sur une seule ligne, une valeur par case (il y en a tout 30 000 valeurs)
    pouvoir relancer mon programme, que la deuxième ligne du fichier se remplisse....

    est ce possible

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 83
    Par défaut
    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
    %nettoyage
    clear
    clc
    warning('off','MATLAB:dispatcher:InexactMatch')
     
    %boite de dialogue,selection des 2 signaux
    [nom,acces] = uigetfile('*.wav','Selectionner un fichier wav');
     
    [y,fe,bits]=wavread(nom,2000000);
    fs=2000;
    x=resample(y,fs,fe); 
    n=length(x);
    signal=x(:,1);
    %echelle de temps
    t=(0:n-1)/fs;            
    %filtre, decomposition puis reconstruction
    %calcul frequence et fft
    freq=(0:n-1)/n*fs-fs/2;
    idx=freq>300 & freq <800;
    s1=20*log10(abs(fft(signal)));
    spart = s1(idx);
    length(spart)
    fichier=fopen('valeur2.xls','a+');
    fprintf(fichier,'%2.2g\n',spart);
    fclose(fichier)
    quand je lance mon programme plusieurs fois, les valeurs s'inscrivent dans la même colonne à la suite des autres.

    j'aimerais que le premier lancement remplisse la première colonne de mon fichier excel(ca c'est ok), et que quand je le relance, cette fois ci les valeurs se mettent dans la deuxième colonne et non à la suite

    quelqu'un sait il faire?

  5. #5
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    Un fichier ne s'écrit pas colonne par colonne mais ligne par ligne. Ajouter une colonne entière dans un fichier revient à ajouter une valeur à la fin de chaque ligne.

    Donc ce que tu cherches à faire n'est pas très évident. A chaque fois, il faut lire tout le fichier, ajouters les valeurs correspondantes à la fin de chaque ligne et écrire à nouveau l'ensemble du fichier.

    Note : utilise l'argument optionel "t" de la fonction FOPEN pour traiter des fichiers texte (voir la documentation)

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 83
    Par défaut
    est e que cela est moins difficile de lancer le programme une fois, d'afficher les valeurs sur lma première ligne
    ensuite de relancer le programme une deuxièmme fois et que les valeurs s'écrivent sur la deuxième ligne...

Discussions similaires

  1. Ecrire \" dans un fichier
    Par photorelief dans le forum Langage
    Réponses: 2
    Dernier message: 14/09/2005, 15h56
  2. [JAR] Lire et Ecrire dans un fichier contenu dans un jar
    Par lipao17 dans le forum Général Java
    Réponses: 5
    Dernier message: 02/05/2005, 12h01
  3. Ecrire dans un fichier
    Par gibet_b dans le forum Linux
    Réponses: 5
    Dernier message: 25/04/2005, 20h11
  4. Ecrire dans un fichier grace à un trigger ?
    Par zigoo dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 29/10/2004, 20h03
  5. Ecrire dans un fichier sans supprimer le reste
    Par koan_sabian dans le forum Linux
    Réponses: 4
    Dernier message: 20/02/2003, 15h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo