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 affichage élement de vecteur


Sujet :

MATLAB

  1. #1
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 30
    Par défaut problème affichage élement de vecteur
    J'ai un vecteur dx.

    Pour chaque élément de dx ayant une valeur >10 en valeur absolu je voudrai afficher cette valeur. Voila le script que j'utilise:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    for X=TEMPS2(1:end-2)<div style="margin-left:40px">if (abs(dx(X))>10)<div style="margin-left:40px">abs(dx(X))
    </div>end
    </div>end


    Je n'ai pas d'erreur, par contre je n'affiche rien en sortie, alors qu'il existe effectivement des des valeurs supèrieur à 10.

    Quelqu'un pourrait il m'éclairer svp?
    merci d'avance.

  2. #2
    Membre chevronné Avatar de sango85
    Inscrit en
    Février 2007
    Messages
    147
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Février 2007
    Messages : 147
    Par défaut
    Je ne vois pas où se situe ton soucis : je viens de tester :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    TEMPS2 = (1:20)
    dx = TEMPS2;
     
    for X=TEMPS2(1:end-2)
        if (abs(dx(X))>10)
            abs(dx(X))
        end
    end
    et je n'ai aucun soucis d'affichage... Pourrait-on avoir un échantillon du vecteur de départ ?

    NB : un affichage avec disp est "plus élégant".

  3. #3
    Expert confirmé
    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
    Par défaut
    Est-ce que cela pourrait avoir un lien avec cette FAQ (très très fréquente) :
    Pourquoi 0.3-0.2-0.1 est-il différent de 0 ?
    :arrow: Règles du Forum

    Adepte de la maïeutique

  4. #4
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 30
    Par défaut
    Désolé d'avoir mal "présenté", en fait je suis en parralèle sur 2 PC celui ci n'ayant pas matlab, donc je dois recopier le code...

  5. #5
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 30
    Par défaut
    D'aprés ton code Sango, dx=TEMPS2, alors qu'en fait dans le code que j'ai envoyé, dx est un vecteur et TEMPS2 correspond à l'indice de ce vecteur.

    code de Sango:
    TEMPS2 = (1:20)
    dx = TEMPS2;

    for X=TEMPS2(1:end-2)
    if (abs(dx(X))>10)
    abs(dx(X))
    end
    end

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 11
    Par défaut
    Bonjour,

    j'ai également testé, et chez moi ça marche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for i=1:(length(dx)-2)
    if abs(dx(i))>10
    disp(abs(X(i)))
    end
    end
    J'ai juste changé le nom de l'indice mais je ne pense pas que ça joue beaucoup...

  7. #7
    Membre habitué
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    12
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 12
    Par défaut
    Pourquoi ne pas essayer quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    for TEMPS2 = 1:end-2
     
        if (abs(dx(TEMPS2))>10)
     
            abs(dx(TEMPS2)) 
     
        end 
     
    end
    Et c'est pas gênant d'avoir "end-2" , parce que end c'est un mot réservé par Matlab.

  8. #8
    Membre habitué
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    12
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 12
    Par défaut
    pardon désolé dans ma dernière phrase il manque un point d'interrogation au bout:
    Et c'est pas gênant d'avoir "end-2" ?

    Je voulais juste dire de faire attention à l'emploi de mots réservés comme end par exemple qui peuvent causer bien des soucis

  9. #9
    Membre averti
    Inscrit en
    Juillet 2007
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 30
    Par défaut
    le code de galaadb est correct! c' est bon sa marche.


    Par contre:code de:captain_usopp est faux je pense
    :
    for TEMPS2 = 1:end-2

    if (abs(dx(TEMPS2))>10)

    abs(dx(TEMPS2))

    end

    end

    on ne peut pas utiliser end allieurs que dans une matrice je crois(cf erreur matlab).

    merci pour vos réponses.

  10. #10
    Expert confirmé
    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
    Par défaut
    @mariono :
    Pour illustrer le problème qui peut se poser comme l'explique la FAQ dont j'ai donné le lien.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    dx=15*rand(1,10);
    dx(1)=10+eps-eps/2;%donc dx(1) est plus grand que 10
    TEMPS2=1:length(dx);
    for X=TEMPS2(1:end-2)
        if (abs(dx(X))>10)
            disp(['indice : ',num2str(X)]);
            abs(dx(X)) 
        end 
    end
    N'affichera jamais indice : 1
    => Lire la FAQ !!

    @captain_usopp : end doit être utilisé en indice comme c'est le cas dans les autres posts, ton code ne fonctionne pas (à moins que tu n'utilises end comme variable ce qui est effectivement plus que gênant).
    :arrow: Règles du Forum

    Adepte de la maïeutique

Discussions similaires

  1. Réponses: 10
    Dernier message: 08/06/2009, 11h30
  2. problème affichage image
    Par thealpacino dans le forum Balisage (X)HTML et validation W3C
    Réponses: 8
    Dernier message: 30/05/2005, 13h56
  3. Problème affichage primitive
    Par goutbouyo dans le forum DirectX
    Réponses: 4
    Dernier message: 29/12/2004, 18h25
  4. [Plugin][VE] Problème affichage
    Par sebb84 dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 05/07/2004, 14h50
  5. [DOS] Problème affichage de DOS dans un Memo
    Par Pedro dans le forum API, COM et SDKs
    Réponses: 9
    Dernier message: 25/06/2004, 13h31

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