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

Interfaces Graphiques Discussion :

la fonction spline dans l'interface [Débutant]


Sujet :

Interfaces Graphiques

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 3
    Par défaut la fonction spline dans l'interface
    salut tout le monde,
    voici mon problème, j'ai essayé de lisser des courbes avec la fonction spline à partir de l'interface, et voilà que je reçois le message suivant :

    ??? Error using ==> rdivide
    Integers can only be combined with integers of the same class, or
    scalar doubles.

    Error in ==> spline at 60
    dd = ones(yd,1); dx = diff(x); divdif = diff(y,[],2)./dx(dd,: );

    Error in ==> projet>buttontraitement_Callback at 294
    yy=spline(t,handles.(sprintf('intensitePixel%d',i)),xx);

    ??? Error while evaluating uicontrol Callback
    je signale que j'ai déjà utilisé la fonction spline dans un script
    exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    %------------------------------------------------------------------------
    t=(0.8/6):(0.8/6):0.8;
    v=[1 5 2 3 6 4];
    xx=(0.8/6):(0.2/6):0.8;
    yy=spline(t,v,xx);
    %------------------------------------------------------------------------
    et cela a bien marcher, mais apparemment il y' a un problème quand c'est fait à partir d'une des fonctions de l'interface, surtout que l'équivalant du vecteur v dans l'exemple est un élément d'une structure (handles.intensitePixel).

    voici le code source:
    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
    %------------------------------------------------------------------------
    function bouttontraitement_Callback(gcf, event_data, handles)
     
             handles = guidata(gcbf);
     
             t = (0.8/handles.temps):(0.8/handles.temps):0.8;
             xx=(0.8/handles.temps):(0.2/handles.temps):0.8;
     
             if handles.N == 6
     
                for i=1:handles.N
     
                    yy=spline(t,handles.(sprintf('intensitePixel%d',i)),xx);
     
                    subplot(3,2,i), plot(xx,yy), grid
     
                end
     
             else
     
                 for i=1:handles.N
     
                    yy=spline(t,handles.(sprintf('intensitePixel%d',i)),xx);
     
                    subplot(4,2,i), plot(xx,yy), grid
     
                end
     
     
             end
     
             guidata(gcbf,handles);
    %------------------------------------------------------------------------
    merci d'avance.

  2. #2
    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
    Manifestement le problème vient du type de donnée en entrée.
    Il faudrait pour t'aider que l'in sache ce qu'il y a dans les variables 'hanldes.temps" et "handles.(sprintf('intensitePixel%d',i))" (ou que tu le vérifies par toi-même)

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 3
    Par défaut
    Effectivement le problème vient bien du type de données, j'ai vérifié et j'ai trouvé que le vecteur "t" est un <1x11 double> alors que "handles.(sprintf('intensitePixel%d',i))" est un <1x11 uint8>.

    Mais malheureusement je ne sais pas comment résoudre ce problème.

    si quelqu'un a une idée de comment convertir un "double" en "uint8" ou le contraire ça m'aiderait beaucoup.

    et merci d'avance.

  4. #4
    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
    Pour convertir un uint8 en double il faut utiliser tout simplement...DOUBLE

  5. #5
    Futur Membre du Club
    Inscrit en
    Mai 2009
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 3
    Par défaut
    Oui je m' en suis rendu compte en utilisant "help uint8" et "help double" dans matlab, merci beaucoup.

    Apparemment le problème ne venait pas du tout de l'interface, c'était une question de classe de variable.

    ça m'a aidé, encore merci.

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

Discussions similaires

  1. [Débutant] comment integrer une fonction créée dans une interface graphique
    Par Automatiq dans le forum Interfaces Graphiques
    Réponses: 14
    Dernier message: 16/02/2015, 20h43
  2. [Débutant] mon interface ne fonctione que dans GUIDE et plante quand je la lance seule
    Par ol9245 dans le forum Interfaces Graphiques
    Réponses: 5
    Dernier message: 28/01/2010, 11h04
  3. Réponses: 1
    Dernier message: 14/10/2009, 15h07
  4. [AJAX] interface boucle retour fonction Ajax dans code Php
    Par sami117 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/02/2009, 19h41
  5. [Débutant] Tracer une fonction à partir de valeurs données dans l'interface
    Par scraven dans le forum Interfaces Graphiques
    Réponses: 3
    Dernier message: 23/04/2008, 07h53

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