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


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Inscrit en
    Novembre 2009
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 45
    Points : 14
    Points
    14
    Par défaut Problème dans mon code
    Bonjour,

    j'ai fait une boucle permettant de chercher les coordonnées x et y d'un point dans une matrice "coord_TC", et si ces coordonnées sont égales à celles contenues dans les deux premières colonnes d'une matrice "temperature" contenant toutes les coordonnées des points du plan et la température en chacun des points.
    Le but étant d'obtenir le vecteur température correspondant aux points de la première matrice.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    for i = 1 : size(coord_TC,1)
        for k = 1 : size(temperature,1)
            if coord_TC(i,1) == temperature(k,1)
                if coord_TC(i,2) == temperature(k,2)
                   temp_IR(i) == temperature(k,3)
                end
            end
        end
    end
    et MATLAB me retourne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ??? Undefined command/function 'temp_IR'.
     
    Error in ==> traitement at 370
                   temp_IR(i) == temperature(k,3)
    en fait j'ai déjà utiliser ce code deux fois précédemment avec deux autres matrices à la place de coord_TC (la première contenait les coordonées d'un profil tracer avec improfile, la seconde, des points obtenus avec impixel)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    for i = 1 : size(profil,1)
        for k = 1 : size(temperature,1)
            if profil(i,1) == temperature(k,1)
                if profil(i,2) == temperature(k,2)
                    temp(i) = temperature(k,3);
                end
             end
         end
    end
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     for i = 1 : numel(xpoint)
         for k = 1 : size(temperature,1)
             if xpoint(i) == temperature(k,1)
                 if ypoint(i) == temperature(k,2)
                    temp_coord(i) = temperature(k,3);
                 end
             end
         end
     end
    Si quelqu'un peut m'expliquer pourquoi dans le premier cas le vecteur temp_IR ne se construit pas, cela m'aiderait beaucoup.

    Merci

  2. #2
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 828
    Points
    14 828
    Par défaut
    Tu as un signal = de trop là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    temp_IR(i) == temperature(k,3)
    Du coup MATLAB essaye de faire une comparaison, et comme le 1er terme n'existe pas, il est pas content.

    Par contre tu pourrais réduire le nombre de boucles :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for i = 1 : size(coord_TC,1)
       [indL,indCol] = find(temperature==coord_TC(i,[1 2]));
       if ~isempty(indL) %au moins un couple trouve
          temp_IR(i)=temperature(indL(1),3);
       end
    end
    devrait fonctionner (non testé)

  3. #3
    Membre à l'essai
    Inscrit en
    Novembre 2009
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 45
    Points : 14
    Points
    14
    Par défaut
    Merci beaucoup Caro-Line.
    C'est dingue ça je l'avais sous le nez ce second signe égal. j'ai pas vu .

    Par contre le code que tu m'as donné revoie ceci, parce que les deux matrices n'ont pas la même dimension j'imagine.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ??? Error using ==> unknown
    Matrix dimensions must agree.
     
    Error in ==> traitement at 383
       [indL,indCol] = find(temperature==coord_TC(i,[1 2]));

  4. #4
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 828
    Points
    14 828
    Par défaut
    Oui j'ai oublié que temperature avait plus de 2 colonnes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for i = 1 : size(coord_TC,1)
       [indL,indCol] = find(temperature(:,[1 2])==coord_TC(i,[1 2]));
       if ~isempty(indL) %au moins un couple trouve
          temp_IR(i)=temperature(indL(1),3);
       end
    end

Discussions similaires

  1. Problème dans mon code
    Par mrbou dans le forum ASP
    Réponses: 15
    Dernier message: 01/10/2008, 15h38
  2. Réponses: 3
    Dernier message: 15/03/2008, 16h15
  3. Problème dans mon code
    Par curro dans le forum Débuter
    Réponses: 14
    Dernier message: 29/08/2007, 02h46
  4. Réponses: 2
    Dernier message: 03/05/2007, 10h00
  5. Réponses: 13
    Dernier message: 17/10/2006, 16h35

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