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 :

[indexage logique] répéter chaque valeur d'un vecteur


Sujet :

MATLAB

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Points : 476
    Points
    476
    Par défaut [indexage logique] répéter chaque valeur d'un vecteur
    Bonjour

    J'ai un vecteur A = [4 8 10]
    J'aimerais en créer un nouveau (B) pour lequel chaque valeur de A sera répété

    B=[4 4 8 8 10 10]

    de dimension A*2 donc.

    Pour l'instant j'ai utilisé une boucle comme cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    a=[0:2]
    b=[1:3]
    for ii=1:3
    B(ii+a(ii):ii+b(ii)) = A(ii)
    end
    qui me donne bien

    B =

    4 4 8 8 10 10

    Serait il possible de faire plus simple, en indexage logique par exemple?

    Merci d'avance
    OS : taff > Window 7 32bit - Home > Windows 7 64bit
    Matlab : taff > v2013b - Home > r2009a

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 882
    Points
    52 882
    Par défaut
    Tu peux utiliser la fonction kron
    Voir ici : Gestion des matrices - Réplication entrelacée
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    1 002
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 1 002
    Points : 476
    Points
    476
    Par défaut
    ok, merci pour ta réponse Dut

    et petite simplification quand même pour la boucle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     A=[4 8 10];
    a=[0:numel(A)-1]
     
    for ii=a+1
    B(ii+a(ii):ii+a(ii)+1) = A(ii);
    end
    B
    OS : taff > Window 7 32bit - Home > Windows 7 64bit
    Matlab : taff > v2013b - Home > r2009a

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

Discussions similaires

  1. indexage logique et multiples valeurs
    Par Grasshoper dans le forum MATLAB
    Réponses: 3
    Dernier message: 22/06/2013, 10h24
  2. Remplacer valeurs avec Indexage logique
    Par Newenda dans le forum MATLAB
    Réponses: 8
    Dernier message: 04/08/2010, 11h45
  3. Indexage logique pour plusieurs valeurs
    Par Gui13 dans le forum MATLAB
    Réponses: 6
    Dernier message: 04/07/2007, 10h23
  4. Indexage logique pour plusieurs valeurs
    Par Dam2227 dans le forum MATLAB
    Réponses: 4
    Dernier message: 13/06/2007, 14h48
  5. Repliquer chaque valeur d'un vecteur
    Par hidies dans le forum MATLAB
    Réponses: 2
    Dernier message: 26/04/2007, 16h19

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