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 :

Matrice vers format xyz


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9
    Par défaut Matrice vers format xyz
    Bonjour à tous,

    En temps normal, je profite pleinement des réponses du forum pour résoudre mes problèmes mais sur celui-ci je commence à coincer un peu...
    Le principe est simple. Je parts d'une matrice n*n et je veux fabriquer un fichier texte avec trois colonnes xyz qui correspondent aux coordonnées xy d'un point de la matrice et z la valeur de ce point.
    Je vous propose ce que j'ai déja :
    m c'est ma matrice n*n

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    for i=1:n
    for j=1:n
    x(i)=i
    y(j)=j
    z...=m(i,j)
    end
    end
    je ne vois pas comment obtenir la valeur du point dans ma matrice.
    Une fois terminé, je voudrais concaténer xyz dans une matrice trois colonnes séparés par des espaces et après je pourrais exporter avec dlmwrite.

    Une fois mon fichier texte avec mes colonnes x,y,z, je pourrais utiliser un autre logiciel.

    Si vous avez une idée élégante de faire ça, je suis preneur.
    Merci d'avance.

  2. #2
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Par défaut
    Bonjour,

    A partir de ton code, je ferais un truc comme ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    % Initialisation des variables
    x=[];
    y=[];
    z=[];
     
    for i=1:n
        for j=1:p       
            x(end+1)=i; 
            y(end+1)=j;
            z(end+1)=m(i,j)
        end
    end
    J'espère que ca donne ce que tu souhaites. Dans le principe c'est pas la méthode la plus élégante mais normalement celle qui permet de ne pas trop se mélanger les piceaux dans les indices.

    Bonne journée,
    Duf

  3. #3
    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
    Une autre solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    M = [1 2 ; 3 4 ; 5 6 ; 7 8]
     
    [i,j] = meshgrid(1:size(M,2),1:size(M,1));
     
    A = [j(:) i(:) M(:)]
    ou directement si la matrice de départ ne contient que des valeurs non nulles :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [A(:,1),A(:,2),A(:,3)] = find(M)
    Note : les valeurs seront classées par colonne

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 9
    Par défaut
    Bonjour, et merci à tous les deux. Les deux solutions que vous me proposez fonctionnent très bien.
    Duf, ta proposition ressemble exactement à la logique je cherchais mais il est vrai que la proposition de Dut est comme qui dirait... plus légère! C'est vrai que je ne connais pas vraiment les capacités des matrices de matlab, j'ai plutôt l'habitude du fortran et donc des compteurs d'où la première piste que je vous ai proposé.
    Merci beaucoup pour vos solutions, c'est plaisant d'obtenir ce que l'on veut!
    Bonne journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Matlab enregistrement matrice au format image
    Par janvier.janvier dans le forum Images
    Réponses: 5
    Dernier message: 06/01/2009, 19h58
  2. imprter les données mysql vers format CVS
    Par ghyosmik dans le forum Débuter
    Réponses: 4
    Dernier message: 18/03/2008, 14h40
  3. [MySQL] Exportation mysql vers format xml par php
    Par kamacho dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 12/12/2007, 22h40
  4. [VBA-E]: alphanumérique vers format numerique?
    Par VBBBA dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/03/2007, 21h38
  5. Configuration d'un export vers format texte
    Par celesteorion dans le forum Access
    Réponses: 3
    Dernier message: 04/08/2006, 10h00

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