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 :

ajout lignes dans une matrice


Sujet :

MATLAB

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mars 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 47
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2015
    Messages : 13
    Points : 7
    Points
    7
    Par défaut ajout lignes dans une matrice
    bonjour,

    je cherche, après calculs, à remplacer une ligne dans une matrice par une ou plusieurs lignes

    exple:

    1 2 3
    4 2 7
    5 9 1

    peut devenir

    1 2 3
    2 3 5
    1 5 4
    5 9 1

    comment faire ?

    merci

  2. #2
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut ajout lignes dans une matrice
    Bonjour,

    Une solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    M=[1 2 3
        4 2 7
        5 9 1];
    R=2;% LIgne à remplacer
    L=[2 3 5
       1 5 4];
     
    [m,n]=size(L)
     
    cat(1,cat(1,M(R-1,:),L),M(n,:))

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mars 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 47
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2015
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    bonjour,

    j'ai mal choisi mon exemple

    dans mon probleme, les lignes à ajouter ne sont pas connues avant de faire des calculs (elements et nombre)

    elles doivent résulter d'une ligne de la matrice de départ

    je m'explique :

    1. on choisi une ligne (selon une certaine condition)
    2. on retranche une valeur au dernier element de la ligne choisie
    3. on ajoute (selon un certaine condition) cette valeur au autres elmts de la ligne choisie (un elmt à la fois)
      ainsi, chaque ajout me crée une nouvelle ligne (<=n-1)
    4. les lignes obtenues remplace celle de départ


    on obtient alors, exmple:

    1 2 3
    4 5 6
    7 8 9
    donne
    1 2 3
    4+2 5 6-2
    4 5+2 6-2
    7 8 9

  4. #4
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut ajout lignes dans une matrice
    Bonjour,

    Peut-être :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    M=[1 2 3
        4 5 6
        7 8 9];
    R=2;% LIgne à remplacer
    V=2;% Valeur
    L(1,:)=[M(R,1)+V M(R,2) M(R,3)-V]
    L(2,:)=[M(R,1) M(R,2)+V M(R,3)-V]
    [m,n]=size(L)
    cat(1,cat(1,M(R-1,:),L),M(n,:))

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mars 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 47
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2015
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    L(1,:)=[M(R,1)+V M(R,2) M(R,3)-V]
    L(2,:)=[M(R,1) M(R,2)+V M(R,3)-V]


    dans le cas d'une matrice plus gde (n x n), doit-on passer par une boucle (for ou autre)

    ou peut-on faire plus simple

  6. #6
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut
    Bonjour,

    On peut faire pareil avec une boucle pour les calculs de L.
    As-tu un exemple ?

  7. #7
    Futur Membre du Club
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mars 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 47
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2015
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    bonjour,

    j'ai essayé qlq chose mais sans succes

    je vous montre ce que j'ai fait

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    M = [.00 .25 .00 .75
         .15 .25 .00 .6
         .00 .45 .00 .55
         .15 .45 .00 .4
         .00 .25 .20 .55
         .15 .25 .20 .4
         .00 .45 .20 .35
         .15 .45 .20 .20]
     
     
    b = [.15 .45 .20 .45]
     
    for i = 1 : n
     
     
     if M(i,m) > b(m)
      v = M(i,m) - b(m)   % val à ajouter ou soustraire
      M(i,m) = b(m)
     
      for j =1 : m-1
       D(j) = M(i,j)+v  % vect resultat de l'ajout de val
      end
     
       for j = 1 : m-1
         if D(j) <= b(j)     % comparaison avec b
     
           % creation des lignes à inserer ds M
           for k = 1 : m-1 
             if k == j
               L(k) = M(i,j) + v
               else L(k) = M(i,j)
             end
           end
           L(m) = b(m)
           K(j,:) = L
     
         end
       end
     
        % je n'arrive pas à faire la concatenation
     
       if j == m 
         if  D > b
          K(?,:) = M(i,:)
         end
       end 
     
     end
    end

  8. #8
    Membre émérite
    Homme Profil pro
    Inscrit en
    Mai 2008
    Messages
    2 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 2 040
    Points : 2 841
    Points
    2 841
    Par défaut ajout lignes dans une matrice
    Bonjour,

    Explique nous ce que tu veux faire avec b

  9. #9
    Futur Membre du Club
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mars 2015
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 47
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2015
    Messages : 13
    Points : 7
    Points
    7
    Par défaut
    bonjour,

    b est un vect donné , il constitue une borne pour les elemts de M

    si M(i,m)> b(m) pour i=1,n
    alors on retranche la difference b(m)-M(i,m) de M(i,m) et on l'ajout au autres elmts de la meme ligne tant qu'on ne dépasse pas la b(j) correspodant
    si aucun ajout n'est permis alors on supprime la ligne
    sinon chaque ajout me crée une nouvelle ligne

Discussions similaires

  1. Ajout et suppression de ligne dans une matrice
    Par Ryma_d3 dans le forum MATLAB
    Réponses: 2
    Dernier message: 27/01/2012, 19h35
  2. Supprimer des lignes dans une matrice
    Par Ptinéwik dans le forum MATLAB
    Réponses: 7
    Dernier message: 30/01/2008, 13h55
  3. Réponses: 2
    Dernier message: 08/03/2007, 11h06
  4. Stockage de lignes dans une matrice
    Par S4sha dans le forum MATLAB
    Réponses: 3
    Dernier message: 11/06/2006, 14h03
  5. Tracer une ligne dans une matrice
    Par S4sha dans le forum MATLAB
    Réponses: 4
    Dernier message: 30/05/2006, 15h10

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