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 :

concaténation des vecteurs de tailles différentes


Sujet :

MATLAB

  1. #1
    Membre du Club
    Inscrit en
    Juin 2008
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 64
    Points : 58
    Points
    58
    Par défaut concaténation des vecteurs de tailles différentes
    Bonsoir,

    je voudrais juste savoir si c'est possible de concaténer deux vecteur (ou plus) qui n'ont pas la même taille.

    soit A de taille : 102 1
    et B de taille : 1024 1

    merci d'avance

  2. #2
    Expert confirmé
    Avatar de duf42
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Novembre 2007
    Messages
    3 111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Points : 4 661
    Points
    4 661
    Par défaut
    Bonjour,

    La solution peut être d'utiliser un tableau de cellule:
    Bonne journée,
    Duf
    Simulink & Embedded Coder

    Au boulot : Windows 7 , MATLAB r2016b
    A la maison : ArchLinux mais pas MATLAB

  3. #3
    Membre du Club
    Inscrit en
    Juin 2008
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 64
    Points : 58
    Points
    58
    Par défaut
    merci, ça marche pour la concaténation! mais j'ai besoin de faire des opération sur ce vecteur et ça ne marche pas si je les concatène de cette façon!
    en fait ce que j'ai besoin c'est d'avoir un seul vecteur.

    A de taille : 1, N
    B de tailele : 1, M

    je veux avoir un vecteur de taille: 1,N+M

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Salut,

    comme ce sont des vecteurs (1 ligne pour chaque variable) tu peux tout simplement les concatener l'un derrière l'autre :
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  5. #5
    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
    Simplement comme cela non? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    A=[8 4 4];B=[9 2]
    >> C=[A B]
     
    C =
     
         8     4     4     9     2
    OS : taff > Window 7 32bit - Home > Windows 7 64bit
    Matlab : taff > v2013b - Home > r2009a

  6. #6
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Tu peux aussi consulter le tutoriel du site qui comprends une partie sur la concaténation :
    http://briot-jerome.developpez.com/m...gestion/#LIV-A
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  7. #7
    Membre du Club
    Inscrit en
    Juin 2008
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 64
    Points : 58
    Points
    58
    Par défaut
    Merci, j'ai déjà essayé ça mais ça me donne une erreur signalant que les matrice doivent avoir la même taille


    ceci est l'erreur généré par matlab:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ??? Error using ==> horzcat
    All matrices on a row in the bracketed expression must have the 
     same number of rows.
    merci de m'avoir donner votre temps

  8. #8
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 304
    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 304
    Points : 52 886
    Points
    52 886
    Par défaut
    Pour concaténer 2 vecteurs sans se soucier de savoir si ce sont des vecteurs lignes ou colonnes, il suffit de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    A = [1 2 3 4 5]
    B = [6;7;8;9]
     
    C = [A(:) ; B(:)]
    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)

  9. #9
    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
    Citation Envoyé par loulitta Voir le message
    Merci, j'ai déjà essayé ça mais ça me donne une erreur signalant que les matrice doivent avoir la même taille


    ceci est l'erreur généré par matlab:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ??? Error using ==> horzcat
    All matrices on a row in the bracketed expression must have the 
     same number of rows.
    merci de m'avoir donner votre temps
    Oui comme le dit Dut, c'est juste un problème de forme de la matrice (colonne ou ligne). Il suffit donc juste de faire comme Dut le dis ou de transposer n'importe laquelle des deux matrices:

    >> A=[4 9 3];B=[8 ; 5 ; 1];C=[A B']

    C =

    4 9 3 8 5 1
    OS : taff > Window 7 32bit - Home > Windows 7 64bit
    Matlab : taff > v2013b - Home > r2009a

  10. #10
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 304
    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 304
    Points : 52 886
    Points
    52 886
    Par défaut
    Citation Envoyé par Newenda Voir le message
    de transposer n'importe laquelle des deux matrices:
    Ben non justement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    >> A=[4 9 3];B=[8 ; 5 ; 1];C=[A' B]
    
    C =
    
         4     8
         9     5
         3     1
    Il faut faire comme je l'ai montré précédemment... c'est la seule solution pour ne pas avoir à s'inquiéter de l'orientation des vecteurs
    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)

  11. #11
    Membre éclairé Avatar de tubaas
    Homme Profil pro
    Acousticien
    Inscrit en
    Août 2009
    Messages
    641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Acousticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 641
    Points : 825
    Points
    825
    Par défaut
    oui ou en ligne
    du coup je me demande pourquoi j'ai rencontré ce type de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    x = [x(:)].'
    %qui devrait être équivalent à
    x=x(:)'
    le point notemment m'intrigue mais peut-être est-ce une ancienne façon de faire puisque Matlab relève le crochet en orange

  12. #12
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 304
    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 304
    Points : 52 886
    Points
    52 886
    Par défaut
    Citation Envoyé par tubaas Voir le message
    oui ou en ligne
    Euh... sauf qu'il n'y a (quasiment) aucun intérêt à obtenir un vecteur ligne sous MATLAB...

    Un vecteur ligne "s'utilise" exactement de la même façon qu'un vecteur colonne, donc ce dernier suffit amplement

    Citation Envoyé par tubaas Voir le message
    C'est ce qu'on fait quand on ne comprend pas ce qu'on fait
    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)

  13. #13
    Membre du Club
    Inscrit en
    Juin 2008
    Messages
    64
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 64
    Points : 58
    Points
    58
    Par défaut
    merci! c'est bon ça marche

  14. #14
    Membre éclairé Avatar de tubaas
    Homme Profil pro
    Acousticien
    Inscrit en
    Août 2009
    Messages
    641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Acousticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 641
    Points : 825
    Points
    825
    Par défaut
    je dois dire que personnelement au début je m'y perdais totalement.
    je penche pour une ancienne syntaxe parce qu'en l'occurence
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    %   Copyright 1988-2005 The MathWorks, Inc.
    %       $Revision: 1.1.6.2 $
    j'ose espérer qu'il savent ce qu'ils font

  15. #15
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 304
    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 304
    Points : 52 886
    Points
    52 886
    Par défaut
    Citation Envoyé par tubaas Voir le message
    je dois dire que personnelement au début je m'y perdais totalement.
    je penche pour une ancienne syntaxe parce qu'en l'occurence
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    %   Copyright 1988-2005 The MathWorks, Inc.
    %       $Revision: 1.1.6.2 $
    j'ose espérer qu'il savent ce qu'ils font
    Il n'y a pas d'ancienne syntaxe

    Le fait que certains codes propres à MATLAB comporte des bizarreries (pour rester poli ) n'est pas un grand secret.

    De quelle fonction est tiré le copyright que tu cites ?
    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)

  16. #16
    Membre éclairé Avatar de tubaas
    Homme Profil pro
    Acousticien
    Inscrit en
    Août 2009
    Messages
    641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Acousticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 641
    Points : 825
    Points
    825
    Par défaut
    local_max de la signal processing toolbox (?) mais je pense qu'elle n'est pas très utilisée puisque non documentée et qu'il y a findpeak, pas de local_min alors qu'il suffit de changer le signe des inégalités.

  17. #17
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 304
    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 304
    Points : 52 886
    Points
    52 886
    Par défaut
    Citation Envoyé par tubaas Voir le message
    local_max de la signal processing toolbox (?)
    Ahh ça y est je suis aveugle

    Franchement... c'est un peu codé avec les pieds

    Ou alors ça répond à un besoin spécifique que j'ai du mal à identifier...
    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)

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

Discussions similaires

  1. [Débutant] Stocker des vecteurs de taille différente
    Par Jean Val dans le forum Signal
    Réponses: 3
    Dernier message: 16/04/2015, 03h30
  2. Réponses: 2
    Dernier message: 05/02/2008, 11h47
  3. Réponses: 4
    Dernier message: 05/05/2007, 19h12
  4. Alignement d'un texte sur des écrans de taille différent
    Par Kuchiki Byakuya dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 05/02/2007, 19h07
  5. Réponses: 6
    Dernier message: 09/11/2006, 16h34

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