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 :

Géneration d'une liste des valeurs selon des criteres


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2013
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 26
    Points : 18
    Points
    18
    Par défaut Géneration d'une liste des valeurs selon des criteres
    Bonjour;
    Je cherche à générer une liste des valeurs selon les critères suivantes.

    Imaginons que j'ai un intervalle de [22:79].

    je choisis au random une valeur au random qui appartient à l'intervalle [22:79]:
    ex : 25 après je genere une liste de 5 valeurs qui suit avec un pas de 1 donc : 25,26, 27,28, 29,30.


    Mon problème est de générer cette liste qui devait appartenir tout le temps à cet intervalle [ 22,79].
    imaginons que la valeur random choisie est 79donc par defaut la liste générée est : 79 80 81 82 83
    Perso, je veux que la liste générée soit : 79, 22,23, 24,25 et ne pas celle d'avant vu que mon intervalle de valeurs est [ 22:79].

    Pouvez vous m'aider?

    Merci d'avance.

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Points : 2 385
    Points
    2 385
    Par défaut
    Bonjour,

    Cela doit être facilement faisable avec des boucles if dans un premier temps. Peux-tu nous montrer ce que tu as commencé à faire?
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

  3. #3
    Membre régulier Avatar de Alex3434
    Homme Profil pro
    Docteur / Ingénieur R&D
    Inscrit en
    Juillet 2014
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Docteur / Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2014
    Messages : 66
    Points : 76
    Points
    76
    Par défaut
    Tiens une version avec taille de la liste des valeurs réglable.

    Alex.

    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
    Debut_intervalle = 22;
    Fin_intervalle = 79;
    Nbre_valeurs = 5;    % Taille de la liste des valeurs
     
    Valeur_random = round(Debut_intervalle + (Fin_intervalle - Debut_intervalle).*rand(1,1));
     
    Tableau_valeurs = zeros(Nbre_valeurs,1);
    var = Valeur_random;
     
    for i = 1:Nbre_valeurs
     
        if var <= Fin_intervalle 
            Tableau_valeurs(i) = var;
            var = var + 1;
        else
            var = Debut_intervalle;
            Tableau_valeurs(i) = var;
            var = var + 1;
        end
     
    end

  4. #4
    Membre à l'essai
    Inscrit en
    Mai 2013
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 26
    Points : 18
    Points
    18
    Par défaut
    Ça marche ! parfait!
    Mais je confronte un problème quand je veux générer un pattern des valeurs .

    Exemple A= [ 78 79 22 23 24 ]
    si je veux générer un pattern de 10 valeurs qui appartiennent à cet intervalle.
    Ça marche plus avec l'expression

    floor(A(1,1) + ( A(1,end)- A(1,1))*rand(1,10)).

    Avez-vous une idée?
    Je vous remercie.

  5. #5
    Membre régulier Avatar de Alex3434
    Homme Profil pro
    Docteur / Ingénieur R&D
    Inscrit en
    Juillet 2014
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Docteur / Ingénieur R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2014
    Messages : 66
    Points : 76
    Points
    76
    Par défaut
    Citation Envoyé par mdimagho Voir le message
    Mais je confronte un problème quand je veux générer un pattern des valeurs .
    Qu’appelez vous un pattern des valeurs ?

    Citation Envoyé par mdimagho Voir le message
    Exemple A= [ 78 79 22 23 24 ]
    si je veux générer un pattern de 10 valeurs qui appartiennent à cet intervalle.
    Ça marche plus avec l'expression

    floor(A(1,1) + ( A(1,end)- A(1,1))*rand(1,10)).
    Sans explication plus complètes sur cette formule je ne peux rien faire.

  6. #6
    Membre à l'essai
    Inscrit en
    Mai 2013
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 26
    Points : 18
    Points
    18
    Par défaut
    Un pattern veut dire que je choisis au hasard x valeurs qui appartiennent à cet intervalle avec répétition.
    Soit mon intervalle
    A: [78 79 22 23 24 25]
    Un pattern exemple de 10 valeurs est de :
    78 78 22 23 79 25 25 25 23 22 et ça peut changer d'une simulation à l'autre.
    Quand je fait rand(1,10) ça va générer 10 valeurs entre 0 et 1.
    Apres je ne sais pas trop comment l'adapter à intervalle particulier come
    le dernier

    La formule que je l'ai donné ça marche pour un intervalle croissant. à pas 1 .
    A(1) c'est le premier valeur de l'intervalle A
    A(end) est le dernier valeur de l'intervalle A.

  7. #7
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Points : 2 385
    Points
    2 385
    Par défaut
    toujours avec des if

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    x = rand(1);
    if x < (1/nbDeValeurs)
         A(1)  = first_value;
    elseif x < (2/nb_Valeurs)
         A(1) = second_value;
         % elseif ...
         % jusque < nb_Valeurs/nb_Valeurs
    end
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

  8. #8
    Membre à l'essai
    Inscrit en
    Mai 2013
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mai 2013
    Messages : 26
    Points : 18
    Points
    18
    Par défaut
    C'est quoi le variable Nb_valeurs?
    Est il le nombre de pattern souhaité?
    Je be comprends pas le jusqu'à.
    C'est in boucle répéter jusqu'à ?

  9. #9
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Points : 2 385
    Points
    2 385
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    % nbDeValeurs est le nombre de valeurs dans notre tableau de valeurs
     
    x = rand(1);
    if x < (1/nbDeValeurs)
         A(1)  = first_value;
    elseif x < (2/nbDeValeurs)
         A(1) = second_value;
    elseif x < (3/nbDeValeurs)
         A(1) < third_value;
         % on continue les elsif jusqu'à atteindre la derniere valeur de notre tableau de valeur, c'est à dire jusqu'à ce que x < 1
    end
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/06/2012, 08h49
  2. Réponses: 13
    Dernier message: 22/07/2009, 14h36
  3. Réponses: 4
    Dernier message: 14/05/2009, 14h15
  4. Spliter une valeur selon des mots spécifiques
    Par witch dans le forum Langage
    Réponses: 15
    Dernier message: 03/10/2008, 11h10
  5. [MySQL] Liste deroulante et inscription des valeurs dans une table
    Par stefon dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 24/11/2006, 15h31

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