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 :

Passage de 5 matrices Nx3 à 1 matrice Nx3x5 [Débutant]


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2012
    Messages : 32
    Points : 21
    Points
    21
    Par défaut Passage de 5 matrices Nx3 à 1 matrice Nx3x5
    Bonjour.
    J'essaye de passer de 5 matrices de dimension Nx3 à une matrice Nx3X5
    J'utilise la procédure suivante :
    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
    S11a=dlmread('S11a.txt');
    S11b=dlmread('S11b.txt');
    S11c=dlmread('S11c.txt');
    S11d=dlmread('S11d.txt');
    S11e=dlmread('S11e.txt');
    a=size(S11a,1) % nombre de lignes dans les matrices S11
    b=size(S11a,2) % nombre de colonnes dans les matrices S11
    S11=zeros(a,b,5);
    % for i=1:a
    %     for j=1:b
    % S11(i,j,1)=S11a(i,j)
    %     end
    % end
     
    S11(:,:,2)=S11b;
    S11(:,:,3)=S11c;
    S11(:,:,4)=S11d;
    S11(:,:,5)=S11e;
    J'ai d'abord essayé la méthode la plus en rapport avec Matlab mais comme les matrices ne sont pas de même taille cela ne fonctionne pas.
    J'ai ensuite essayé la méthode à l'ancienne en imposant les valeurs pour chaque élément de la matrice. Je n'ai pas d'erreur mais Matlab n'en finit pas de tourner.
    Avez vous une solution à m'indiquer ?
    Merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Si tes matrices ne sont pas de même taille, tu vas avoir des 0 "parasites" qui vont s'insérer comme dans l'exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    V = 1:5;
    V(2,1:10) = 1:10
    
    V =
    
         1     2     3     4     5     0     0     0     0     0
         1     2     3     4     5     6     7     8     9    10
    pour former un vrai tableau sans cases vides.

    Selon le résultat que tu souhaites, tu peux utiliser un tableau de cellules.
    Je te conseille la lecture de ce sujet de la FAQ.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2012
    Messages : 32
    Points : 21
    Points
    21
    Par défaut
    J'ai lu la FAQ et j'ai suivi le lien. Je pense ne pas avoir besoin de tableau de cellule car mon problème est plus simple me semble-t-il car mes 5 matrices initiales sont toutes de tailles Nx3 et toutes les cellules sont de même nature (réels). J'ai l'impression que la concaténation serait plus adaptée mais je ne suis pas arrivé à l'utiliser correctement. Je souhaite remplir une matrice "3D" par des matrices 2D de dimensions identiques. J'ai vraiment énormément de mal à me familiariser avec la syntaxe Matlab. J'ai l'impression qu'il s'agit d'un problème simple appelant une réponse simple et je ne la trouve pas.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Les N est-il le même pour toutes les matrices ?
    Si oui, pas de problème, et tu peux facilement utiliser la fonction cat comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cat(3, S11a, S1b, S11c, S11d, S11e)
    sinon tu as le problème montré dans l'exemple.

  5. #5
    FLB
    FLB est déconnecté
    Modérateur
    Avatar de FLB
    Homme Profil pro
    Ing. Aérospatiale
    Inscrit en
    Juin 2003
    Messages
    770
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Ing. Aérospatiale
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2003
    Messages : 770
    Points : 1 185
    Points
    1 185
    Par défaut
    Citation Envoyé par noel19 Voir le message
    J'ai d'abord essayé la méthode la plus en rapport avec Matlab mais comme les matrices ne sont pas de même taille cela ne fonctionne pas.
    Citation Envoyé par noel19 Voir le message
    mes 5 matrices initiales sont toutes de tailles Nx3 et toutes les cellules sont de même nature (réels).
    N est bien le même pour les 5 matrices?
    Voici un exemple qui marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    % Génération de fichiers de test
    %for i = 1:5
    %     dlmwrite(['S11' char(i+96) '.txt'],magic(6)+i);
    %end
     
    S11a=dlmread('S11a.txt');
    a=size(S11a,1); % nombre de lignes dans les matrices S11
    b=size(S11a,2); % nombre de colonnes dans les matrices S11
    S11=zeros(a,b,5);
    for i = 1:5
         S11(:,:,i) = dlmread(['S11' char(i+96) '.txt']);
    end

  6. #6
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2012
    Messages : 32
    Points : 21
    Points
    21
    Par défaut
    Le malentendu vient de mon expression car lorsque je parlais de matrice de taille différente il s'agissait de la matrice finale qui est 3D et qui est donc de taille de différente des 5 autres (qui elles sont de taille identique en 2D).
    Je vais donc tester vos propositions.
    Merci.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Octobre 2012
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2012
    Messages : 32
    Points : 21
    Points
    21
    Par défaut
    J'ai testé vos 2 propositions :
    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
    S11a=dlmread('S11a.txt');
    S11b=dlmread('S11b.txt');
    S11c=dlmread('S11c.txt');
    S11d=dlmread('S11d.txt');
    S11e=dlmread('S11e.txt');
    a=size(S11a,1) % nombre de lignes dans les matrices S11
    b=size(S11a,2) % nombre de colonnes dans les matrices S11
    S11=zeros(a,b,5);
    a=size(S11a,1); % nombre de lignes dans les matrices S11
    b=size(S11a,2); % nombre de colonnes dans les matrices S11
    S11=zeros(a,b,5);
    S11=cat(3, S11a, S11b, S11c, S11d, S11e)
     
    % for i = 1:5
    %      S11(:,:,i) = dlmread(['S11' char(i+96) '.txt']);
    % end
    Et j'obtiens exactement le même résultat mais pas celui que j'espérais.

    Voici certaines données (issues de l'éditeur de workspace) du fichier initial :
    1.033e+009 0.56591 0.05688
    1.036e+009 0.55821 -0.031492

    Et les mêmes données dans le fichier final :
    1.0330 0.0000 0.0000
    1.0360 0.0000 -0.0000
    Le facteur 1.e009 de la première colonne est donné en tout début de colonne.
    J'ai donné ces valeurs pour montrer qu'au résultat j'ai la colonne 1 correctement mais que dans les colonnes 2 et 3 j'ai une valeur nulle mais signée. S'agit-il d'un problème de format ?
    J'ai plutôt l'impression que l'éditeur de workspace me joue des tours avec le facteur 1.e009 mais je ne peux pas modifier le format des données du fichier final affichées car le choix ne m'est pas proposé.

  8. #8

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/05/2013, 18h05
  2. transformer une matrice 3x3 en matrice 2x2
    Par orand dans le forum Développement 2D, 3D et Jeux
    Réponses: 5
    Dernier message: 20/02/2008, 20h51
  3. Transposée matrice d'une matrice
    Par al_alias dans le forum Pascal
    Réponses: 6
    Dernier message: 31/05/2007, 23h51
  4. Division d'une matrice en sous matrices
    Par hanane78 dans le forum MATLAB
    Réponses: 4
    Dernier message: 02/05/2007, 18h15
  5. Conversion matrice 4D en matrice 2D
    Par mosq_nico dans le forum MATLAB
    Réponses: 2
    Dernier message: 04/06/2006, 19h07

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