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 :

Lancer un fichier/fonction à partir d'un bouton [Débutant]


Sujet :

Interfaces Graphiques

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2009
    Messages : 9
    Par défaut Lancer un fichier/fonction à partir d'un bouton
    Bonsoir,

    Ca fait plusieurs heures que j'épluche les tutos et doc de Matlab et je touche absolument rien...

    J'aimerais, simplement, en cliquant sur un bouton, lancer des actions que j'ai dans divers fichiers.

    Par exemple, un simple import de son comme ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [s1,Fs1] = wavread('son1.wav');
    [s2,Fs2] = wavread('son2.wav');
    situé dans un fichier load_sound.m

    Dans mon fichier pour l'interface j'ai essayé plein de trucs un peu au hasard mais rien ne fonctionne.

    J'ai crée un simple bouton de ce style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    % --- Executes on button press in pushbutton1.
    function pushbutton1_Callback(hObject, eventdata, handles)
    % hObject    handle to pushbutton1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    % handles    structure with handles and user data (see GUIDATA)
    mais après je ne sais vraiment pas quoi mettre. Je sais que le callback doit rentrer quelque part mais je vois pas :/

    Une âme charitable pour m'aider ?

    Merci d'avance

  2. #2
    Membre émérite Avatar de tubaas
    Homme Profil pro
    Acousticien
    Inscrit en
    Août 2009
    Messages
    641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Acousticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 641
    Par défaut
    le callback est la fonction function pushbutton1_Callback
    tu dois faire appel aux fonctions que tu veux exécuter dans cette fonction.
    cependant les fonctions que tu veux exécuter doivent soit être définies dans le même fichier que le callback soit avoir un fichier .m spécifique qui leur est associé et qui porte leur nom.
    ex :tu pourrais faire un fichier load.m avec pour code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    function [s1,Fs1,s2,Fs2]=load(title1,title2)
    [s1,Fs1] = wavread(title1);
    [s2,Fs2] = wavread(title2);
    à toi de voir comment faire passer tes arguments

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2009
    Messages : 9
    Par défaut
    Donc je modifie mon fichier load_sound.m

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [s1,Fs1] = wavread('son1.wav');
    [s2,Fs2] = wavread('son2.wav');
    en

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    title1 = 'son1.wav';
    title2 = 'son2.wav';
     
    function [s1,Fs1,s2,Fs2]=load(title1,title2)
    [s1,Fs1] = wavread(title1);
    [s2,Fs2] = wavread(title2);
    ?

    Et pour appeler la fonction via le callback, ça se passe comment ? Le nom de la fonction porte le nom du fichier .m ? (load_sound ici ?)

  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
    Ne surtout pas appeller sa fonction LOAD, LOAD est une fonction standard de MATLAB, elle va être écrasée si tu fais ça.

    De ce que je comprends tu as un fichier load_sound.m qui est en fait un script.
    Tu le transformes en fonction en rajoutant la ligne d'entête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function [s1,Fs1,s2,Fs2]=load_sound(title1,title2)
    [s1,Fs1] = wavread(title1);
    [s2,Fs2] = wavread(title2);
    Et tu l'appelles ensuite dans le callback :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    % --- Executes on button press in pushbutton1.
    function pushbutton1_Callback(hObject, eventdata, handles)
    % hObject    handle to pushbutton1 (see GCBO)
    % eventdata  reserved - to be defined in a future version of MATLAB
    title1 = 'son1.wav';
    title2 = 'son2.wav';
     
    [s1,Fs1,s2,Fs2]=load(title1,title2)

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2009
    Messages : 9
    Par défaut
    Ok, j'ai enlevé le "load".

    En fait, je dois faire un pti programme qui mixe 2 sons entre eux pour ensuite les démixer à l'aide de la méthode fastica.

    Pour ça, j'ai fait une série de script au format .m.

    J'ai ensuite crée un fichier "all.m" avec le nom de chaque script dedans :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    load_sound
    mixage
    DoIca
    demixage
    affichage
    Quand je l'exécute, aucun soucis.

    J'aimerais donc créer une interface graphique avec différents boutons qui font toutes ces étapes. Donc lancer chaque script avec un bouton différent.

    Voilà pour la problématique générale.


    Ensuite, j'ai tapé ce que tu as écrit, donc un fichier load_sound.m contenant juste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    function [s1,Fs1,s2,Fs2]=load_sound(title1,title2)
    [s1,Fs1] = wavread(title1);
    [s2,Fs2] = wavread(title2);
    et un fichier untitled.m avec
    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
     
    function untitled_OpeningFcn(hObject, eventdata, handles, varargin)
     
    handles.output = hObject;
     
    guidata(hObject, handles);
     
    function varargout = untitled_OutputFcn(hObject, eventdata, handles) 
     
    varargout{1} = handles.output;
     
     
    function pushbutton1_Callback(hObject, eventdata, handles)
    title1 = 'son1.wav';
    title2 = 'son2.wav';
     
    [s1,Fs1,s2,Fs2]=load(title1,title2)
    mais ça me renvoie

    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
    ??? Error using ==> load
    Too many output arguments.
     
    Error in ==> untitled>pushbutton1_Callback at 83
    [s1,Fs1,s2,Fs2]=load(title1,title2)
     
    Error in ==> gui_mainfcn at 96
            feval(varargin{:});
     
    Error in ==> untitled at 42
        gui_mainfcn(gui_State, varargin{:});
     
    Error in ==>
    @(hObject,eventdata)untitled('pushbutton1_Callback',hObject,eventdata,guidata(hObject))
     
     
    ??? Error while evaluating uicontrol Callback
    dans la console matlab

  6. #6
    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
    Oui j'ai fait un copier/coller malheureux, c'est load_sound que tu dois pas appelé et pas load.

    Un petit tour par là :
    (enfin il me semble, sinon utilises l'outil de recherche de la documentation pour bien comprendre comment utiliser les fonctions)

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 11/03/2014, 22h16
  2. appel d'une fonction à partir d'un bouton
    Par hammag dans le forum Langage
    Réponses: 7
    Dernier message: 04/06/2009, 19h00
  3. lancer un serveur a partir d'un bouton
    Par M E H D I dans le forum NetBeans
    Réponses: 9
    Dernier message: 13/04/2009, 12h16
  4. Réponses: 3
    Dernier message: 25/04/2006, 14h50
  5. [VBA-E] lancer un programme VB à partir d'un bouton
    Par yaya54 dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 27/02/2006, 10h54

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