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 :

Determiner le numéro d'une matrice en 3D


Sujet :

MATLAB

  1. #1
    Membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2010
    Messages : 59
    Points : 53
    Points
    53
    Par défaut Determiner le numéro d'une matrice en 3D
    Bonjour,
    Voilà, le problème est assez simple mais comme je suis débutant en matlab, je n'arrive pas à mettre sous la main la réponse à cette question.
    Ma question est:
    Je cherche une fonction qui me permet de récupérer les numéros d'une matrice en 3D pour tester si c'est la première, ou deuxième ou 3ième matrice, ainsi de suite.

    Merci de votre aide.

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

    Je ne comprends pas ta question...
    Une matrice 3D est un tableau de taille MxNxP, M , N et P étant respectivement les tailles des dimensions 1, 2 et 3.
    Qu'appelles-tu "première, deuxième, troisième,... matrice" ? Et quels sont ces numéros dont tu parles ?

  3. #3
    Membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2010
    Messages : 59
    Points : 53
    Points
    53
    Par défaut
    Citation Envoyé par Winjerome Voir le message
    Bonjour,

    Je ne comprends pas ta question...
    Une matrice 3D est un tableau de taille MxNxP, M , N et P étant respectivement les tailles des dimensions 1, 2 et 3.
    Qu'appelles-tu "première, deuxième, troisième,... matrice" ? Et quels sont ces numéros dont tu parles ?
    Merci de votre réponse,
    En fait, peut être je me suis mal exprimé, je vais prendre un exemple assez simple:
    j'ai un tableau de taille M*N*P avec i=5 (lignes), j=2 (colonnes) et k=3 (nombres de matrices)

    Mon souci est d'utiliser cette 3ième dimension pour dire qu'il s'agit par exemple du 1er tableau si le résultat de la fonction vaut 1.

    Cordialement.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Redak2010 Voir le message
    Mon souci est d'utiliser cette 3ième dimension pour dire qu'il s'agit par exemple du 1er tableau si le résultat de la fonction vaut 1.
    Tu imagines bien que sorti de son contexte, cela n'a que peu de sens pour moi...

    Au hasard, ceci ?

  5. #5
    Membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2010
    Messages : 59
    Points : 53
    Points
    53
    Par défaut
    Citation Envoyé par Winjerome Voir le message
    Tu imagines bien que sorti de son contexte, cela n'a que peu de sens pour moi...

    Au hasard, ceci ?
    En fait, prenons cet exemple:
    M(:,:,1) =
    364 154 207
    405 192 223
    405 192 223
    364 154 207
    364 154 207
    M(:,:,2) =
    258 531 550
    258 531 550
    316 571 566
    316 571 566
    258 531 550

    Je veux tout simplement récupérer le numéro de la matrice M ( M étant composée de 5 lignes et 3 colonnes). je sais qu'avec size(M,3) je récupère sa taille qui vaut 2.

    Je ne saurai vous expliquer plus clairement que ça

  6. #6
    Invité
    Invité(e)
    Par défaut
    Et dans ce cas précis, c'est quoi son numéro ? La taille de la troisième dimension ?

  7. #7
    Membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2010
    Messages : 59
    Points : 53
    Points
    53
    Par défaut
    effectivement, c'est la troisième dimension.

  8. #8
    Invité
    Invité(e)
    Par défaut
    Et bien comme tu l'a écris dans ton message précédent, simplement size(M,3) non ?

  9. #9
    Membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2010
    Messages : 59
    Points : 53
    Points
    53
    Par défaut
    size(M,3) me donne plutôt une valeur qui vaut 2, mais je souhaiterai plutôt travailler le numéro des matrices. Je me demande si ça existe cette fonction.

    Par exemple tester si le n° de la matrice est 1, ensuite modifier les éléments de la matrice.

    Merci encore de ton aide

  10. #10
    Invité
    Invité(e)
    Par défaut
    C'est quoi le numéro d'une matrice ??

  11. #11
    Membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2010
    Messages : 59
    Points : 53
    Points
    53
    Par défaut
    Citation Envoyé par Winjerome Voir le message
    C'est quoi le numéro d'une matrice ??

    Enfin, je veux dire l'indice de la troisième dimension.
    size(M,3) me donne la valeur de la troisième dimension.
    [i,j,val]=find(M) me donne l'indice en ligne et colonne de chaque valeur de la matrice M.

    Cordialement

  12. #12
    Invité
    Invité(e)
    Par défaut
    Tu ne pouvais pas le dire plutôt que tu appliquais la fonction find dessus et que tu voulais simplement obtenir les indices de la troisième dimension ?!

    Voir le principe exposé dans la Comment trouver la valeur minimale (ou maximale) avec sa position ?

  13. #13
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut!
    "matrice" est un terme d'algèbre linéaire, à ne pas confondre à "tableau". Une matrice est toujours à 2 dimensions.
    Jean-Marc Blanc
    Calcul numérique de processus industriels
    Formation, conseil, développement

    Point n'est besoin d'espérer pour entreprendre, ni de réussir pour persévérer. (Guillaume le Taiseux)

  14. #14
    Nouveau membre du Club
    Homme Profil pro
    Ingénierie en automatisation et systèmes intelligents
    Inscrit en
    Septembre 2008
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénierie en automatisation et systèmes intelligents
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 40
    Points : 38
    Points
    38
    Par défaut
    Ceci ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [i,j,k]=ind2sub(size(M),1:numel(M))
    k sera alors ton numéro de matrice pour chacun des indices [i,j] de la matrice k.

  15. #15
    Invité
    Invité(e)
    Par défaut
    Non
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    [I,J,K]=ind2sub(size(M),find(...))
    où I, J et K tels que chacun des leurs éléments soit M(I(i), J(i), K(i))

  16. #16
    Nouveau membre du Club
    Homme Profil pro
    Ingénierie en automatisation et systèmes intelligents
    Inscrit en
    Septembre 2008
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénierie en automatisation et systèmes intelligents
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 40
    Points : 38
    Points
    38
    Par défaut
    Je ne suis pas certain de comprendre, mais c'est ce que je me disais qu'il voulait. Ce que tu expliques, c'est justement ce que j'ai voulu faire et ce que je crois qu'il voulait, d'où son application ici par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    M = zeros(5,3,2);
    M(:,:,1) = [364,154,207;405,192,223;405,192,223;364,154,207;364,154,207];
    M(:,:,2) = [258,531,550;258,531,550;316,571,566;316,571,566;258,531,550];
     
    M
     
    [~,~,k] = ind2sub(size(M),find(M==258))
    Eh bah oui, la valeur 258 se retrouve trois fois dans la deuxième matrice...

    Et avec ma fonction précédente, j'obtiens le mapping des indices 3D des 30 éléments :

    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
    26
    27
    28
    29
    30
    31
    i =
     
      Columns 1 through 15
     
         1     2     3     4     5     1     2     3     4     5     1     2     3     4     5
     
      Columns 16 through 30
     
         1     2     3     4     5     1     2     3     4     5     1     2     3     4     5
     
     
    j =
     
      Columns 1 through 15
     
         1     1     1     1     1     2     2     2     2     2     3     3     3     3     3
     
      Columns 16 through 30
     
         1     1     1     1     1     2     2     2     2     2     3     3     3     3     3
     
     
    k =
     
      Columns 1 through 15
     
         1     1     1     1     1     1     1     1     1     1     1     1     1     1     1
     
      Columns 16 through 30
     
         2     2     2     2     2     2     2     2     2     2     2     2     2     2     2
    Les possibilités de manipulations sont infinies, il suffit de savoir ce qu'il veut vraiment. De ce que j'ai compris, il voulait savoir à quelle matrice appartient telle ou telle valeur, comme dans mon exemple d'application. Autrement, il faudra encore de meilleures explications puisque nous serons plusieurs à ne pas comprendre son concept.

    À moins que ce qu'il veuille c'est qu'à partice de sa matrice M 3D il puisse trouver quel est le numéro "k" de la matrice tel que all(M(:,:,k) == A) où A est une matrice 2D appartenant à M, sa liste de matrices.

    Alors là, je n'ai pas optimisé le principe, mais c'est simplement pour l'idée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    A = M(:,:,2);
     
    pointeurs = all(all(M==repmat(A,[1,1,size(M,3)])))
     
    [~,~,k] = ind2sub(size(pointeurs),find(pointeurs==1))
    Bref supposons que A est une matrice quelconque qui appartient aux matrices de M. (Puisque j'ai assigné la deuxième matrice de M à A, le résultat devrait être 2), alors :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    pointeurs(:,:,1) =
     
         0
     
     
    pointeurs(:,:,2) =
     
         1
     
     
    k =
     
         2
    En tout cas, c'est un brainstorming d'idées, il reste à simplifier et optimiser dépendamment de ce que tu veux vraiment...

Discussions similaires

  1. Determinant d'une matrice carré
    Par Linu6 dans le forum Mathématiques
    Réponses: 26
    Dernier message: 10/07/2008, 12h22
  2. Réponses: 1
    Dernier message: 02/04/2008, 14h17
  3. Calcul de déterminant d'une matrice non carrée
    Par rouliane dans le forum MATLAB
    Réponses: 13
    Dernier message: 24/11/2006, 10h23
  4. Calculer le determinant d'une matrice carrée
    Par NThierry dans le forum C
    Réponses: 15
    Dernier message: 27/08/2006, 11h31
  5. calcul du determinant d'une matrice
    Par gautret dans le forum Algorithmes et structures de données
    Réponses: 12
    Dernier message: 17/03/2006, 21h30

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