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 :

code optimisé pour emmêler deux vecteurs


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Par défaut code optimisé pour emmêler deux vecteurs
    Salut tous,

    je fais souvant ce type de chose sous matlab :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    A=[1 2 3 4 5]
    B=[10 20 30 40 50]
    C=emmel(A,B)
    et ça donne :
    C=[1 10 2 20 3 30 4 40 5 50]

    mais dans ma fonction matlab il y a des boucles et truc danss ce genre et je pense que mon code n'est pas optimisé.

    Du coup je pense qu'il doit y avoir une méthode pour faire ce que je veux de façon optimisé avec des commandes matlab avec 1 ou 2 lignes ?

    ==> pourriez vous me dire quelles fonction utiliser pour cela ?

    merci d'avance

  2. #2
    Membre chevronné
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2012
    Messages
    292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 292
    Par défaut
    Bonjour,

    Peut-on voir votre code pour pouvoir l'optimiser?


    Une idée de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    C = zeros(1, length(A)+length(B))
    C(1:2:end)=A
    C(2:2:end)=B

  3. #3
    Membre émérite
    Homme Profil pro
    Doctorant automatique
    Inscrit en
    Janvier 2012
    Messages
    446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Doctorant automatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2012
    Messages : 446
    Par défaut
    Et que veux-tu optimiser aussi : le temps de calcul ou le nombre de ligne de code ? Ce n'est pas parce que tu utilises du code made in special matlab que c'est forcément le plus rapide. Par contre utiliser la solution de Gakusei est très courte à écrire, ce sera difficile de faire mieux.

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

    Une autre solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    A = [1 2 3 4 5];
    B = [10 20 30 40 50];
    C = reshape( [A;B], 1, [] )

  5. #5
    Membre émérite
    Avatar de ol9245
    Homme Profil pro
    Chercheur
    Inscrit en
    Avril 2007
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Avril 2007
    Messages : 985
    Billets dans le blog
    1
    Par défaut
    Pour avoir exatement ton tésultat 'entremêlé' :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    C = [A;B] ;
    Resultat = C(:).' ;
    si A et B n'ont aps la même taille, une suggestion (non optimisée en temps de calcul)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    la = length(A) ;
    lb= length(B) ;
    t=max(la, lb) ;
     
    A1 = inf(1, t) ;
    A1(1:la)=A ;
     
    B1 = inf(1, t) ;
    B1(1:lb)=B ;
     
    C = [A1 ; B1] ;
    C = C(:).' ;
    C = C(isfinite(C)) ;

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    2 051
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 2 051
    Par défaut
    Merci beaucoup de votre aide tous !!!

    Citation Envoyé par Winjerome Voir le message
    Une autre solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    A = [1 2 3 4 5];
    B = [10 20 30 40 50];
    C = reshape( [A;B], 1, [] )
    voici exactement ce que je cherchais

    super, merci

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

Discussions similaires

  1. [XL-2010] Code VBA pour comparer deux feuilles Excel
    Par sam013 dans le forum Excel
    Réponses: 1
    Dernier message: 13/08/2012, 15h53
  2. code optimisé pour interpolation
    Par membreComplexe12 dans le forum MATLAB
    Réponses: 7
    Dernier message: 28/06/2012, 10h48
  3. Code VB6 pour referencer deux tables dans un formulaire
    Par mianiser dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 04/02/2011, 15h28
  4. Réponses: 4
    Dernier message: 20/11/2007, 17h13

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