1. #1
    Membre du Club
    Femme Profil pro
    Doctorant
    Inscrit en
    mai 2014
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant
    Secteur : Enseignement

    Informations forums :
    Inscription : mai 2014
    Messages : 67
    Points : 53
    Points
    53

    Par défaut Division de la 3ème dimension en 4 matrices multidimensionnelles

    Bon j'ai vraiment du mal à me repérer avec des matrices 3D 4D et plus.

    J'ai une matrice multidim MAT= 2x2x453, cela correspond aux lon lat time.
    Time étant des moyennes mensuelles je souhaiterai extraire des valeurs de ma 3D pour effectuer 4 nouvelles matrices 3D. Je souhaiterais diviser ma matrice saisonnièrement (DJF MAM JJA SON).

    La 3D de MAT c'est des valeurs de température tous les mois (attention je commence la série par le mois de mars) donc j'ai M A M J J A S O N D J F M A M J J A .... S O N (453 mois)
    j'aimerai 4 matrices (1 par saison) --> M1= 2x2x38 ; M2= 2x2x38 ; M3= 2x2x38 ; M4= 2x2x37 ;

    Ainsi la 3D de M1 = M A M M A M ...
    La 3D de M2 = J J A J J A ...
    La 3D de M3 = S O N S O N ...
    La 3D de M4 = D J F D J F ...

    Merciii

  2. #2
    Modérateur
    Avatar de le fab
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mars 2005
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : mars 2005
    Messages : 1 563
    Points : 2 760
    Points
    2 760

    Par défaut

    salut

    commences par créer des vecteurs d'index "saison" par rapport à une année commençant par le mois de mars
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vPrintemps = [1 1 1 0 0 0 0 0 0 0 0 0];
    que tu dupliques sur toute ta période
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    vPrintemps = repmat(vPrintemps , 1, ceil(size(M,3)/12));
    vPrintemps(453+1:end) = [];
    et ensuite tu selectionnes avec ce vecteur d'index
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    M1 = M(:,:,vPrintemps);
    pour l'automatisation, je te conseilles d'adopter un tableau de cellules pour stocker tes matrices saisonnières (M{1} plutôt que M1)

    sinon il doit y avoir aussi moyen de déformer ta matrice (reshape) afin de créer une dimension supplémentaires faisant apparaître les trimestres (cf ton post précédent)

    Fabien

  3. #3
    Membre du Club
    Femme Profil pro
    Doctorant
    Inscrit en
    mai 2014
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant
    Secteur : Enseignement

    Informations forums :
    Inscription : mai 2014
    Messages : 67
    Points : 53
    Points
    53

    Par défaut

    Lorsque j'effectue cette commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    >> M1 = OUTPUT_(:,:,vPrintemps);
    j'ai l'erreur suivante: :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Subscript indices must either be real positive integers or logicals.
    En ce qui concerne la fonction reshape lié à mon dernier post je me suis arraché les cheveux toute une journée. Je suis complètement perdue lorsque j'ai des matrices multidimensionnelles. Cela doit être possible mais lorsque je dois visualiser ce que je veux faire avec 3 ou 4 dimension je suis complètement perdue.

  4. #4
    Modérateur
    Avatar de le fab
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mars 2005
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : mars 2005
    Messages : 1 563
    Points : 2 760
    Points
    2 760

    Par défaut

    t'as quoi dans vPrintemps ?
    normalement que des 0 et des 1
    si oui essayes tjrs un vPrintemps = logical(vPrintemps ) ou un vPrintemps = find(vPrintemps )

  5. #5
    Membre du Club
    Femme Profil pro
    Doctorant
    Inscrit en
    mai 2014
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant
    Secteur : Enseignement

    Informations forums :
    Inscription : mai 2014
    Messages : 67
    Points : 53
    Points
    53

    Par défaut

    C'est parfait ! Merci encore

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

Discussions similaires

  1. [Debutant] Recuperer les dimension d'une matrice
    Par SofEvans dans le forum MATLAB
    Réponses: 6
    Dernier message: 12/05/2010, 18h16
  2. recuperer les dimension d'une matrice
    Par darkontes dans le forum Caml
    Réponses: 4
    Dernier message: 10/03/2010, 20h31
  3. [débutants] obtenir les dimensions d'une matrice
    Par roro_la_patate dans le forum C++
    Réponses: 9
    Dernier message: 19/05/2008, 16h14
  4. dimension d'une matrice sous VBA
    Par galaguiloe dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 22/06/2007, 12h20
  5. Suppression d'une dimension sur une matrice
    Par damleg dans le forum MATLAB
    Réponses: 6
    Dernier message: 03/04/2007, 15h59

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