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 condition if avec NaN [Débutant]


Sujet :

MATLAB

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 76
    Points : 50
    Points
    50
    Par défaut Problème condition if avec NaN
    Bonjour,

    J'ai le code suivant :

    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
    50
    51
    52
    53
    zp = 4;
    rs = 31.2*10^(-3);
    ld = 280*10^(-6);
    lq = 560*10^(-6);
    psipm = 29*10^(-3);
    n=0:500:5000;
    idopt=zeros(size(n));
    iqopt=zeros(size(n));
    for m=1:length(n);
        T(m)=m*50;
        for k=1:length(n);
            w(k)=zp*n(k)*2*pi/60;
            [id,iq]=meshgrid([-600:10:0,0:10:600]);
            E=zeros(size(id));
            logical_mat=sqrt(id.^2+iq.^2)<=600;
            E(logical_mat)=...
                (w(k)*T(m)*2)./(3*zp*(rs*id(logical_mat).^2+ ...
                rs*iq(logical_mat).^2+ ...
                w(k)*(ld-lq)*id(logical_mat).*iq(logical_mat)+ ...
                w(k)*psipm*iq(logical_mat)));
            E(~logical_mat)=NaN;
     
            F=zeros(size(E));
            logical_mat2=E<=1;
            F(logical_mat2)=E(logical_mat2);
            F(~logical_mat2)=NaN;
     
            G=zeros(size(F));
            logical_mat3=F>=0;
            G(logical_mat3)=F(logical_mat3);
            G(~logical_mat3)=NaN;
     
            A=zeros(size(G));
            logical_mat4=id<0;
            A(logical_mat4)=G(logical_mat4);
            A(~logical_mat4)=NaN;
     
            B=zeros(size(A));
            logical_mat5=iq>0;
            B(logical_mat5)=A(logical_mat5);
            B(~logical_mat5)=NaN;
     
            [H I]=max(B(:));
            h(k,m)=H;
            if h(k,m)== NaN;
                idopt(k,m)==NaN;
                iqopt(k,m)==NaN;
            else
                idopt(k,m)= id(I);
                iqopt(k,m)=iq(I);
            end
        end
    end
    J'ai un problème dans ma boucle if parce que quand je lance le programme, il s'éxécute mais je n'ai pas le bon résultat... en effet dans idopt et iqopt je n'ai pas de NaN alors que je devrais en avoir vu que j'en ai dans h(k,m). en faite j'ai l'impression que mon résultat ne prend pas en compte ma boucle if. Qu'ai-je fais de mal ?

  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 830
    Points
    14 830
    Par défaut
    Bonjour,

    C'est une erreur assez classique.
    En fait NaN est différent de NaN.
    Vérification :Pour vérifier qu'un élément est NaN il faut utiliser la fonction ISNAN.
    Règles du Forum

    Adepte de la maïeutique

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 76
    Points : 50
    Points
    50
    Par défaut
    merci beaucoup je savais pas

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

Discussions similaires

  1. Problème condition if avec plusieurs booléens
    Par Leniouns dans le forum Général Java
    Réponses: 4
    Dernier message: 30/11/2011, 13h12
  2. [MySQL] Problème suppression valeur avec condition
    Par stefsas dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 28/02/2010, 03h40
  3. Problème ouverture Etat avec condition
    Par Titiii25 dans le forum IHM
    Réponses: 5
    Dernier message: 05/01/2010, 11h07
  4. Problème de requête avec cumul des conditions sur un champ
    Par UtopieAmbiante dans le forum Requêtes
    Réponses: 4
    Dernier message: 11/01/2006, 10h52
  5. Problème de requête avec une condition IN
    Par sorcer1 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 20/10/2005, 11h56

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