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 :

répartition d'un vecteur de valeurs en des cellules selon leur somme qui ne doit pas dépasser une valeur


Sujet :

MATLAB

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Mars 2011
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Mars 2011
    Messages : 76
    Points : 35
    Points
    35
    Par défaut répartition d'un vecteur de valeurs en des cellules selon leur somme qui ne doit pas dépasser une valeur
    Bonjour

    SVP j'ai besoin de votre aide
    En fait j'ai un tableau de taille N=8
    et a chaque élément de ce vecteur est associé un élément d'un autre vecteur B
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    B=64    55    24    21    29    67    69     97
    On veut subdiviser le vecteur A en des cellules (en max 4 cellules ), chaque cellule contient des éléments de A où la somme de leur éléments associés de B ne dépasse pas 100. Pour notre exemple, le résultat doit être comme suit:
    cellule {1}=1 ( car si on lui ajoute l'éléments 8 on va dépasser 100)
    cellule {2}=8 5 2
    cellule {3}=6 3
    cellule {4}=4
    et c'est tout car on doit former 4 cellules .

    J'ai proposé le code suivant, mais j'ai pas trouvé la solution voulu, et il m'affiche des erreurs
    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
     
    C=100;
    n=4 %nombre de cellules
    P=cumsum(B);
    for i=1:N
        for j=1 
            if(P(i)<C)
                cellule{j}=A(1:i);
            end
        end
     
    for j=2:n
           if(P(i)<(C*j))
     
               cellule{j}=s((find(s==(a{j-1}(1,length(a{j-1})))))+1:i);
     
           end
        end
     
    end

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut
    Bonjour,

    Un essai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    clear
    A=[1 8 5 2 6 3 4 7];
    B=[64 55 24 21 29 67 69 97];
    C=100;
    n=4;
    R=1;r=1;
    for i=1:n
        r=R;
        while cumsum(B(r:R)) <= C
            R=R+1;
        end
        cellule{i}=A(r:R-1);
    end
    celldisp(cellule)

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Inscrit en
    Mars 2011
    Messages
    76
    Détails du profil
    Informations personnelles :
    Sexe : Femme

    Informations forums :
    Inscription : Mars 2011
    Messages : 76
    Points : 35
    Points
    35
    Par défaut
    Merci beaucoup pour votre aide

    Mais souvent il m'affiche un message d'erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ndex exceeds matrix dimensions.
     
    Error in VRPTW (line 36)
        while cumsum(p(r:R)) <= C
    et parfois il s'exécute normale
    J'ai pas compris d'où vient ce problème

  4. #4
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut
    Bonjour,
    Donne nous les valeurs de A et B qui bloquent.
    Il faut tester la valeur de R qui doit être inférieure ou égale au nombre d’éléments.

Discussions similaires

  1. [XL-2013] Somme des cellules(-1,0) si la plage contient plusieurs fois une valeur
    Par ledevil dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 10/08/2015, 12h16
  2. Dénombrer des cellules selon leurs couleurs avec formule
    Par Paenitentia dans le forum Excel
    Réponses: 5
    Dernier message: 14/03/2011, 14h38
  3. Formatage des Cellules selon leur type dans DGV
    Par ElTchoupi dans le forum Windows Forms
    Réponses: 8
    Dernier message: 18/11/2009, 16h36
  4. Remplacer des cellules par leurs valeurs
    Par benoitbs dans le forum Excel
    Réponses: 1
    Dernier message: 28/01/2008, 11h21
  5. [Flash MX] Supprimer des carte selon leurs valeurs
    Par Lenalyon dans le forum Flash
    Réponses: 1
    Dernier message: 01/09/2007, 12h18

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