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 :

Assigner un vecteur à une matrice


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 18
    Points : 14
    Points
    14
    Par défaut Assigner un vecteur à une matrice
    Bonjour,

    J'ai réalisé un code qui me permet d'avoir une matrice contenant que "1" et "0", et ce pour chaque cas de mon étude.

    Une fois la matrice est obtenue, j'aimerais remplacer quelques valeurs de la matrice par les valeurs d'un vecteur connu.

    exemple:

    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
     
    %%% La matrice D
    D =
     
         1     1     1     1     0     0     0     0
         1     1     1     0     0     0     0     1
         1     1     0     1     0     0     1     0
         1     1     0     0     0     0     1     1
         1     0     1     1     0     1     0     0
         1     0     1     0     0     1     0     1
         1     0     0     1     0     1     1     0
         1     0     0     0     0     1     1     1
     
    %%% Le vecteur V ayant un nombre d'élément égal au nombre de Nonzero de la matrice D
     
    V=[1 -1 1 -1]
     
    V =
     
         1    -1     1    -1
    Le résultat attendu est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    M =
     
         1    -1     1    -1     0     0     0     0
         1    -1     1     0     0     0     0    -1
         1    -1     0     1     0     0    -1     0
         1    -1     0     0     0     0     1    -1
         1     0    -1     1     0    -1     0     0
         1     0    -1     0     0     1     0    -1
         1     0     0    -1     0     1    -1     0
         1     0     0     0     0    -1     1    -1
    Merci par 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,

    Comment identifies-tu les éléments à remplacer?

    Duf
    Simulink & Embedded Coder

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

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2014
    Messages : 18
    Points : 14
    Points
    14
    Par défaut
    Bonsoir Duf,

    L'identification ce fait par ordre,
    le premier élèment nonzéro de la première ligne de la matrice D va prendre le premier élément du vecteur V,
    le deuxième élèment nonzéro de la première ligne de la matrice D va prendre le deuxième élément du vecteur V,
    .
    .
    .
    le dernier élèment nonzéro de la première ligne de la matrice D va prendre le dernier élément du vecteur V,

    La même chose pour les autres lignes de la matrice D.

    Sachant que le nombre d'élèment qui sont égal à 1 (nonzero) dans une seule de la matrice est toujours égal au nombre d'élèments du vecteur V,
    du coup la matrice peut avoir 12 élèment égal à 1.
    là je vais assigner un vecteur de 12 élèments ( 6 élèment égal à et 6 élèments égal à -1).

    Ce que j'aimerais faire, en ayant la matrice et le vecteur, comment faire l'assignation?

    Merci

  4. #4
    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
    Pour commencer, la fonction FIND te permet de trouver les indices des valeurs à remplacer (numéro de ligne et numéro de colonnes).
    Avec ces informations et une boucle FOR tu devrais être capable d'obtenir le résultat souhaité.

    Si ensuite tu souhaites améliorer ton code, il sera sans doute possible de supprimer la boucle...
    Simulink & Embedded Coder

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

Discussions similaires

  1. "Comparer" un vecteur à une matrice sans boucle for
    Par nawellee dans le forum MATLAB
    Réponses: 2
    Dernier message: 27/04/2013, 20h55
  2. assignment d'un vecteur variable dans une matrice
    Par djpierrot dans le forum Simulink
    Réponses: 0
    Dernier message: 19/04/2009, 14h15
  3. Réponses: 9
    Dernier message: 19/09/2008, 08h54
  4. Réponses: 14
    Dernier message: 28/07/2006, 10h20
  5. valeurs propres d'une matrice et vecteurs propres
    Par la_fantomas dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 01/05/2005, 15h35

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