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 :

Sauvegarde tableau dans fichier xls


Sujet :

MATLAB

  1. #1
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 52
    Points : 40
    Points
    40
    Par défaut Sauvegarde tableau dans fichier xls
    Salut tout le monde,

    Alors j'ai un petit problème avec la fonction xlswrite.
    J'aimerais avoir un tableau excel de ce type en sortie :

    temp amplitude

    1 1,2
    2 1,3
    3 1,4
    4 1,5
    5 1,6

    alors je tape ces lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    tableau=[1 1.2;2 1.3; 3 1.4; 4 1.5; 5 1.6];
    d = {'temps', amplitude',tableau};
    s = xlswrite('tableauexcel.xls', d);
    et puis ca me sort un tableau avec seulement temps amplitude
    sans les valeurs en dessous

    vous avez une idée ?
    j'ai lu qu'il fallait convertir le tableau en cell array avant de déclarer d. Vous en pensez quoi?

    Merci

  2. #2
    Membre extrêmement actif
    Avatar de mihaispr
    Inscrit en
    Décembre 2008
    Messages
    1 025
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 025
    Points : 858
    Points
    858
    Par défaut
    Citation Envoyé par new_matlab Voir le message
    et puis ca me sort un tableau avec seulement temps amplitude
    sans les valeurs en dessousi
    Dans la variable tableau du workspace tu as les valeurs que tu desires. Double click dans workspace sur la valeur tableau pour voir tes elements(Array Editor).


    J'ai mis dans command window:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    >>tableau=[1 1.2;2 1.3; 3 1.4; 4 1.5; 5 1.6];
    d = {'temps', 'amplitude',tableau};
    s = xlswrite('tableauexcel.xls', d,tableau);
    Si tu veux afficher au-dessous les valeurs de la variable tableau il suffit de tapper:


  3. #3
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 52
    Points : 40
    Points
    40
    Par défaut
    je me suis peut etre mal fait comprendre..
    le fichier où je n'obtiens que mes deux colonnes temps amplitude sont celles de mon fichier xls. Je n'arrive pas à obtenir les données correspondantes.

    mihaispr j'ai testé ton code et ca n'a pas l'air de marcher

  4. #4
    Membre extrêmement actif
    Avatar de mihaispr
    Inscrit en
    Décembre 2008
    Messages
    1 025
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 025
    Points : 858
    Points
    858
    Par défaut
    Oui je sais j'essaye de trouver la fonction pour convertir la variable tableau en cell array pour te reconnaitre dans le fichier.

    Tu dois utliser la fonction num2cell. C'est ici le secret de faire ce que tu veux.


    J'ai commence par ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    >>tableau=[1 1.2;2 1.3; 3 1.4; 4 1.5; 5 1.6];
    c= num2cell(tableau) %conversion du tableau en cell array
    %c={ {1 1.2},{2 1.3},{3 1.4},{4 1.5},{5 1.6} } %c est maintenant cell array
    d = {'temps', 'amplitude',tableau};
    s = xlswrite('tableauexcel.xls', d,c);
    Je ne comprends pas pourquoi il ne te stoque dans le fichier .xls aussi les valeurs parce qu'il connait la variable c

    De la documentation:

    "c = num2cell(A) converts the matrix A into a cell array by placing each element of A into a separate cell."

    A ton cas A=tableau.

    Tu est tres proche de resoudre ca.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    >>tableau=[1 1.2;2 1.3; 3 1.4; 4 1.5; 5 1.6];
    c= num2cell(tableau) %conversion du tableau en cell array
    Le resultat c'est:

    Le
    c =

    [1] [1.2000]
    [2] [1.3000]
    [3] [1.4000]
    [4] [1.5000]
    [5] [1.6000]

    Donc c'est bien comme il fait la conversion.

    Ton probleme est dans le xlswrite fonction maintenant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    s = xlswrite('tableauexcel.xls', d,c);
    Il est bizzare qu'il ne copie pas dans le fichier .xls le contenu des valeurs aussi

  5. #5
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 828
    Points
    14 828
    Par défaut
    mihaispr avait quasiment la solution.
    Regarde mieux ce que te donne ta variable d dans ton 1er code et tu devrais comprendre pourquoi ça ne fonctionne pas.
    Dans ton cas d devrait être un tableau de cellules de taille 2*(1+nombre de lignes de tableau).
    Essaye ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    d = [{'temps', 'amplitude'};num2cell(tableau)];

  6. #6
    Membre extrêmement actif
    Avatar de mihaispr
    Inscrit en
    Décembre 2008
    Messages
    1 025
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 025
    Points : 858
    Points
    858
    Par défaut
    Caroline j'ai teste aussi ca mais il ne stoque pas ses valeurs qu'il desire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    >>tableau=[1 1.2;2 1.3; 3 1.4; 4 1.5; 5 1.6];
    c= num2cell(tableau) %conversion du tableau en cell array
     
    d = [{'temps', 'amplitude',c}];
    s = xlswrite('tableauexcel.xls', d);
    Mais en reprenant ton idee caro ca lui donne.


    Teste ca newmatlab dans le command window et ca fonctionnera:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    >> tableau=[1 1.2;2 1.3; 3 1.4; 4 1.5; 5 1.6];
    c= num2cell(tableau) %conversion du tableau en cell array
    Resultat de la conversion:

    c =

    [1] [1.2000]
    [2] [1.3000]
    [3] [1.4000]
    [4] [1.5000]
    [5] [1.6000]

    Et puis pour copier ce que tu desires dans ton fichier .xls:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    >> d = [{'temps', 'amplitude'};num2cell(tableau)];
     s = xlswrite('tableauexcel.xls', d);

  7. #7
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 52
    Points : 40
    Points
    40
    Par défaut
    j'ai testé la solution de caro-line et ca marche pour moi !

    merci mihaispr et caro-line pour votre aide

Discussions similaires

  1. [Tableaux] Ecriture tableau dans fichier
    Par identifiant_bidon dans le forum Langage
    Réponses: 4
    Dernier message: 20/11/2007, 16h48
  2. [Tableaux] tableau dans fichier rtf
    Par crischprolch dans le forum Langage
    Réponses: 1
    Dernier message: 04/07/2007, 11h17
  3. Réponses: 12
    Dernier message: 04/01/2007, 17h31
  4. Sauvegarder structure dans fichier...
    Par Kineas dans le forum C++
    Réponses: 3
    Dernier message: 17/03/2005, 18h57

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