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 :

Problème dans mon code ! (+ une question)


Sujet :

MATLAB

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de thtghgh
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 221
    Par défaut Problème dans mon code ! (+ une question)
    Bonjour à tous !

    Alors voila, j'ai un petit souci dans mon code matlab pour stocker une matrice sous forme d'un tableau particulier.

    Je m'explique : Voici la matrice , j'aimerais stocker les termes qui sont au dessus de la diagonale (les termes diagonaux n'étant pas compris) dans un tableau que j'ai appelé Tab_col (voir code ci dessous), seulement je veux stocker les termes qui sont sous les lignes vertes (donc éviter les deux 0 qui sont en haut)

    Voici le code :
    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
    n=6;
    A=[2 0 1 0 -1 6; 0 1 4 2 1 4; -1 2 3 0 3 1; 0 1 0 -1 0 2; 5 -1 2 0 4 3; -2 4 -3 1 -2 1]
     
    tic
     
    k=1;
    Tab_col=zeros(1,13);
    for j=2:n
        for i=1:n
           if (j>i & A(1,j)~=0)
                Tab_col(1,k)=A(i,j);
                k=k+1;
            end
        end
    end
     
    Tab_col
    disp('Tableau Tab_col enregistré')
    Le souci c'est que lorsque j'affiche Tab_col voici le résultat :
    Tab_col= 1 4 -1 1 3 0 6 4 1 2 3 0 0

    Alors que j'aimerais avoir :
    Tab_col= 1 4 2 0 -1 1 3 0 6 4 1 2 3

    En fait mon programme si il voit le 0 tout en haut il passe directement au stockage de la colonne d'après et je ne sais pas d'ou ca vient!

    Votre aide m'est précieuse !!

    Merci



    PS : Autre question, savez vous quelle taille max peut on donner à une matrice sous matlab?


    Merci

  2. #2
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 122
    Par défaut
    Ben oui c'est normal tu lui dit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (j>i & A(1,j)~=0)
    Si j>i et si le terme en haut de la collone est non nulle. Donc s'il est nul il le prendra pas

  3. #3
    Membre confirmé Avatar de thtghgh
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 221
    Par défaut
    Oui il me le prend pas, mais il ne me prend pas non plus les deux termes qui sont en dessous (le 2 et le 0) alors que je veux qu'il les prenne !

    En fait j'aimerais :

    Si j'ai un zéro sur la premiere ligne à la colonne j, on ne le met pas dans le tableau mais on met tous les autres termes de la colonne j dans le tableau tab_col. Mon code dès qu'il voit un 0 en 1ere ligne il change de colonne directement

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 122
    Par défaut
    Citation Envoyé par thtghgh Voir le message
    Oui il me le prend pas, mais il ne me prend pas non plus les deux termes qui sont en dessous (le 2 et le 0) alors que je veux qu'il les prenne !

    En fait j'aimerais :

    Si j'ai un zéro sur la premiere ligne à la colonne j, on ne le met pas dans le tableau mais on met tous les autres termes de la colonne j dans le tableau tab_col. Mon code dès qu'il voit un 0 en 1ere ligne il change de colonne directement
    Regarde le code il est bon.
    Mais c'est logique qu'il ne le prenne pas.

    Quand tu arrive a A(2,4) qui vaut 2 et que tu veux prendre. Avant de le prendre tu lui demande de regarder A(1,4) s'il est nul tu prends pas ... alors que toi tu veux le prendre meme s'il est pas nul

  5. #5
    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 : 41
    Localisation : France

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

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 111
    Par défaut
    En modifiant un peu ta condition ca devrait aller:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (j > i & ((i == 1) & (A(i,j)~=0) | (i > 1)))
    A tester...

  6. #6
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    122
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 122
    Par défaut
    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
    n=6;
    A=[2 0 1 0 -1 6; 0 1 4 2 1 4; -1 2 3 0 3 1; 0 1 0 -1 0 2; 5 -1 2 0 4 3; -2 4 -3 1 -2 1]
     
    tic
     
    k=1;
    Tab_col=zeros(1,13);
    for j=2:n
        for i=1:n
           if (j>i)
               if i==1 
                   if A(1,j)~=0
                       Tab_col(1,k)=A(i,j);
                       k=k+1;
                   end
               else
                   Tab_col(1,k)=A(i,j);
                   k=k+1;
               end
            end
        end
    end
     
    Tab_col
    disp('Tableau Tab_col enregistré')
    Voila ça marche mais y'a surement plus simple ....

  7. #7
    Membre confirmé Avatar de thtghgh
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 221
    Par défaut
    Merci pour toutes vos réponses !

    Duf42 ton code semble etre correct je vais le tester! Merci bien

  8. #8
    Membre confirmé Avatar de thtghgh
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 221
    Par défaut
    J'aurais voulu savoir si sur la 6eme colonne j'avais eu les deux premiers termes égaux à 0, j'aurais donc voulu stocker à partir du 3eme terme (le premier qui est non nul)

    avez vous une idée de code car je patauge?!

Discussions similaires

  1. [MySQL] Problème dans mon code entre une recherche mysql et en php
    Par pasbonte dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 27/12/2008, 14h04
  2. Réponses: 3
    Dernier message: 15/03/2008, 15h15
  3. Problème dans mon code
    Par curro dans le forum Débuter
    Réponses: 14
    Dernier message: 29/08/2007, 01h46
  4. Réponses: 2
    Dernier message: 03/05/2007, 09h00
  5. Réponses: 13
    Dernier message: 17/10/2006, 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