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 :

Compatibilité MATLAB 6.5 - 7.1


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Femme Profil pro
    Doctorante
    Inscrit en
    Janvier 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Doctorante

    Informations forums :
    Inscription : Janvier 2010
    Messages : 36
    Points : 19
    Points
    19
    Par défaut Compatibilité MATLAB 6.5 - 7.1
    Bonjour à tous,

    Je travaille dans un laboratoire de recherche dans lequel il y a plusieurs ordinateurs, et deux versions de matlab différentes, la version 6.5 sur des pc tournant sous win xp, et 7.1 pour des pc sous 7.

    Le problème que je rencontre est le suivant : j'ai toujours programmé sous v6.5, et je suis passée à v7.1, et mes programmes réalisés sous v7.1 ne tournent pas sous v6.5, c'est à dire, matlab me renvoie une erreur de type "warning end without block", et me redonne la main, au lieu de lancer le programme.

    J'ai essayé de créer le .m avec l'ordi ayant la version 6.5, même chose (erreur et pas de programme).

    Quelqu'un aurait-il la gentillesse de m'aider ?

    Merci d'avance

    Meloody

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 165
    Points
    53 165
    Par défaut
    Montre nous un exemple de code qui ne fonctionne pas sous MATLAB 6.5
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  3. #3
    Membre à l'essai
    Femme Profil pro
    Doctorante
    Inscrit en
    Janvier 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Doctorante

    Informations forums :
    Inscription : Janvier 2010
    Messages : 36
    Points : 19
    Points
    19
    Par défaut
    Bonjour,

    voici un bout de mon code. A savoir, je ne sais pas si ça a un rapport avec le fait que ça ne marche pas, mais j'ai mis la programmation de l'interface graphique directement dans mon programme, ce que je ne faisais pas avant.

    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
     
    function memoire_aud
     
    persistent F_echan amp duree nb_echan_son intervalle temps_son freqmin freqmax nbcomposants...
        lgueur_delai  nb_echan_blanc duree_ISIS nb_echan_ISIS duree_interpaire nb_echan_interpaire...
        duree_ISI nb_echan_ISI duree_rampe nb_echan_rampe temps_rampe freq_rampe nb_echan_plateau  ...
         rep reponse nom_sujet tab tab1 nb nb_essai nb_bonnes_reponses nb_mauvaises_reponses nb_session ...
         freq_comp_acc1 freq_comp_acc2 amp_comp accord_1 accord_2
     
        function interface_memoire_aud
     
            %interface_memoire_aud permet de réaliser la tache memoire_aud.
            %Le bouton commencer permet de commencer la tache.
            %Les boutons paire1 et paire2 permettent de répondre.
     
            %  Initialise et cache l'interface tant qu'elle est en construction.
            f = figure('Visible','off','Position',[360,150,900,560], 'Color', [0.8,0.8,1],'Menubar', 'none', 'Toolbar', 'none');
     
            %  Construction des composants
            BoutonCalibrationOn   = uicontrol('Style','pushbutton',...
                                   'String','Calibration','Position',[10,475,150,50],...
                                   'Fontsize', 15,...
                                   'Userdata',4,...
                                   'BackgroundColor',[1 1 1],...
                                   'ForegroundColor',[0.2,0,0.4],...
                                   'Callback',{@BoutonCalibration_Callback});
     
    ///Ici je déclare les autres boutons ///
     
            %Construction de la fenêtre
            set([f,BoutonCommencer,Bouton1,Bouton2],'Units','normalized'); % Initialise l'interface.
     
            set(f,'Name','Mémoire Auditive')% Donne un nom à l'interface (apparait dans le titre de la fenetre.
            movegui(f,'center')% Déplace l'interface au centre de l'écran
            set(f,'Visible','on')%Rend l'interface visible.
     
     
            %Attribution des fonctions aux boutons
            function BoutonCommencer_Callback(hObject, eventdata, handles)%s'exécute à la pression sur le bouton "commencer"
                set (findobj(gcbf,'UserData',1),'Enable','Inactive');
                set (findobj(gcbf,'UserData',2),'Enable','Inactive');
                set (findobj(gcbf,'UserData',3),'Enable','Inactive');
                synthese;
            end
     
     /// Idem, je déclare les fonctions associées aux autres boutons. ///
     
     
    function initialisation %initialise les paramètres du test
            rand('state', sum(100*clock));
            nom_sujet = input('votre nom :  ','s');
            (...)
    end
     
     function calibration
            t = 7; 
            temps = (0:1/F_echan:t)'; 
            signal_sinus = amp * sin(2*pi*500*temps); 
            son_pur = audioplayer(signal_sinus, F_echan, 24); 
            playblocking(son_pur); % joue le son et attend sa fin avant de rendre la main 
        end
     
        function synthese
     
                amp_comp = amp/nbcomposants;
                (...)
        end
     
    function analyse
            nb_essai = nb_essai + 1;
            if (reponse==1) & (rep==1)
                nb_bonnes_reponses = nb_bonnes_reponses + 1;
                nb_session = nb_session + 1;
                if nb_session ==3
                    nb_session = 0;
                    nbcomposants = nbcomposants + 1;
                else
                    nb_session = nb_session;
                    nbcomposants = nbcomposants;
                end
    (...)
    end
     
        initialisation;
        interface_memoire_aud;
    end
    Voilà, j'ai raccourci un peu les fonctions, sinon ça aurait été trop long.

    Merci d'avance

    Meloody

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 165
    Points
    53 165
    Par défaut
    Tu as placé la fonction qui gère ton interface graphique à l'intérieur de la fonction principale. Tu as donc utilisé la technique des fonctions imbriquées non disponible sous MATLAB 6.5

    Essaie ceci :
    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
     
    function memoire_aud
     
    persistent F_echan amp duree nb_echan_son intervalle temps_son freqmin freqmax nbcomposants...
        lgueur_delai  nb_echan_blanc duree_ISIS nb_echan_ISIS duree_interpaire nb_echan_interpaire...
        duree_ISI nb_echan_ISI duree_rampe nb_echan_rampe temps_rampe freq_rampe nb_echan_plateau  ...
         rep reponse nom_sujet tab tab1 nb nb_essai nb_bonnes_reponses nb_mauvaises_reponses nb_session ...
         freq_comp_acc1 freq_comp_acc2 amp_comp accord_1 accord_2
     
         initialisation;
        interface_memoire_aud;
     
       function interface_memoire_aud
     
            %interface_memoire_aud permet de réaliser la tache memoire_aud.
            %Le bouton commencer permet de commencer la tache.
            %Les boutons paire1 et paire2 permettent de répondre.
     
            %  Initialise et cache l'interface tant qu'elle est en construction.
            f = figure('Visible','off','Position',[360,150,900,560], 'Color', [0.8,0.8,1],'Menubar', 'none', 'Toolbar', 'none');
     
            %  Construction des composants
            BoutonCalibrationOn   = uicontrol('Style','pushbutton',...
                                   'String','Calibration','Position',[10,475,150,50],...
                                   'Fontsize', 15,...
                                   'Userdata',4,...
                                   'BackgroundColor',[1 1 1],...
                                   'ForegroundColor',[0.2,0,0.4],...
                                   'Callback',{@BoutonCalibration_Callback});
     
    ///Ici je déclare les autres boutons ///
     
            %Construction de la fenêtre
            set([f,BoutonCommencer,Bouton1,Bouton2],'Units','normalized'); % Initialise l'interface.
     
            set(f,'Name','Mémoire Auditive')% Donne un nom à l'interface (apparait dans le titre de la fenetre.
            movegui(f,'center')% Déplace l'interface au centre de l'écran
            set(f,'Visible','on')%Rend l'interface visible.
     
     
            %Attribution des fonctions aux boutons
            function BoutonCommencer_Callback(hObject, eventdata, handles)%s'exécute à la pression sur le bouton "commencer"
                set (findobj(gcbf,'UserData',1),'Enable','Inactive');
                set (findobj(gcbf,'UserData',2),'Enable','Inactive');
                set (findobj(gcbf,'UserData',3),'Enable','Inactive');
                synthese;
            end
     
     /// Idem, je déclare les fonctions associées aux autres boutons. ///
     
     
    function initialisation %initialise les paramètres du test
            rand('state', sum(100*clock));
            nom_sujet = input('votre nom :  ','s');
            (...)
    end
     
     function calibration
            t = 7; 
            temps = (0:1/F_echan:t)'; 
            signal_sinus = amp * sin(2*pi*500*temps); 
            son_pur = audioplayer(signal_sinus, F_echan, 24); 
            playblocking(son_pur); % joue le son et attend sa fin avant de rendre la main 
        end
     
        function synthese
     
                amp_comp = amp/nbcomposants;
                (...)
        end
     
    function analyse
            nb_essai = nb_essai + 1;
            if (reponse==1) & (rep==1)
                nb_bonnes_reponses = nb_bonnes_reponses + 1;
                nb_session = nb_session + 1;
                if nb_session ==3
                    nb_session = 0;
                    nbcomposants = nbcomposants + 1;
                else
                    nb_session = nb_session;
                    nbcomposants = nbcomposants;
                end
    (...)
    end
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  5. #5
    Membre à l'essai
    Femme Profil pro
    Doctorante
    Inscrit en
    Janvier 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Doctorante

    Informations forums :
    Inscription : Janvier 2010
    Messages : 36
    Points : 19
    Points
    19
    Par défaut
    Merci Dut pour la rapidité de tes réponses, et le temps que tu prends pour réfléchir à mon problème.

    J'ai fait ce que tu m'as dit, effectivement, le programme se lance et son interface graphique aussi.

    Le problème : dans la fonction initialisation, je définis tout un tas de variables dont le programme a besoin pour réaliser les opérations, et maintenant que l'on appelle la fonction initialisation au début du programme, je reçois une message d'erreur me disant que ces variables ne sont pas définies.

    J'ai essayé de changer l'ordre, mais rien ne marche. De plus, j'imagine que ce n'est pas qu'une histoire d'ordre qui refait marcher le programme...

    Puis-je abuser encore de ta gentillesse ?

    Merci d'avance

  6. #6
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 53 165
    Points
    53 165
    Par défaut
    Sauvegarde les variables nécessaires dans un fichier mat à la fin de la fonction initialisation à l'aide de la fonction SAVE.

    Puis récupère ces variables au début de la fonction interface_memoire_aud grâce à la fonction LOAD
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  7. #7
    Membre à l'essai
    Femme Profil pro
    Doctorante
    Inscrit en
    Janvier 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Doctorante

    Informations forums :
    Inscription : Janvier 2010
    Messages : 36
    Points : 19
    Points
    19
    Par défaut
    Après consultation de l'aide de Matlab, j'ai fait ça :


    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
    54
    55
    56
    57
     
    function memoire_aud
     
    persistent F_echan amp duree nb_echan_son intervalle temps_son freqmin freqmax nbcomposants...
        lgueur_delai  nb_echan_blanc duree_ISIS nb_echan_ISIS duree_interpaire nb_echan_interpaire...
        duree_ISI nb_echan_ISI duree_rampe nb_echan_rampe temps_rampe freq_rampe nb_echan_plateau  ...
         rep reponse nom_sujet tab tab1 nb nb_essai nb_bonnes_reponses nb_mauvaises_reponses nb_session ...
         freq_comp_acc1 freq_comp_acc2 amp_comp accord_1 accord_2
     
        initialisation;
        interface_memoire_aud;
     
        function interface_memoire_aud
     
            %interface_memoire_aud permet de réaliser la tache memoire_aud.
            %Le bouton commencer permet de commencer la tache.
            %Les boutons paire1 et paire2 permettent de répondre.
     
            %  Initialise et cache l'interface tant qu'elle est en construction.
            f = figure('Visible','off','Position',[360,150,900,560], 'Color', [0.8,0.8,1],'Menubar', 'none', 'Toolbar', 'none');
     
            %  Construction des composants
            BoutonCalibrationOn   = uicontrol('Style','pushbutton',...
                                   'String','Calibration','Position',[10,475,150,50],...
                                   'Fontsize', 15,...
                                   'Userdata',4,...
                                   'BackgroundColor',[1 1 1],...
                                   'ForegroundColor',[0.2,0,0.4],...
                                   'Callback',{@BoutonCalibration_Callback});
     
    ///définition des autres boutons et des fonctions associées aux boutons///
     
            load variables.mat;
        end
     
    function initialisation
            rand('state', sum(100*clock));
            nom_sujet = input('votre nom :  ','s');
            lgueur_delai = input('longueur du délai (1 = court, 2 = long) : '); %l'expérimentateur détermine la taille du délai entre les 2 accords
            F_echan = 44100; %fréquence d'échantillonnage
            amp = 0.5; %amplitude
            duree = 0.3; %durée des accords
            nb_echan_son = round(F_echan*duree);
            temps_son = 1:nb_echan_son;
            freqmin = 400; %fréquence limite inférieure de l'accord
            freqmax = 3200; %fréquence limite supérieure de l'accord
            intervalle = 2200; % intervalle entre les 2 composantsn extrêmes de l'accord, en cents
            nbcomposants = 2;
            tab = zeros(1, nb_echan_son);
            tab1 = zeros(1, nb_echan_son);
            nb = 50;
            nb_session = 0;
            nb_essai = 0;
            nb_bonnes_reponses = 0;
            nb_mauvaises_reponses = 0;
            save variables.mat
        end
    Quand je lance le programme, il lance correctement l'interface, mais dès qu'il doit réaliser la suite des opérations (au clic sur le premier bouton il doit produire un son), il me dit que la variable F_echan (la première à être utilisée) n'est pas définie.
    Tu as une idée de pourquoi ça fait ça ?
    Désolée, je débute (ça se voit je crois )

Discussions similaires

  1. Compatibilité MATLAB / DB2
    Par PenelopeC dans le forum MATLAB
    Réponses: 2
    Dernier message: 02/02/2010, 10h34
  2. Réponses: 2
    Dernier message: 24/03/2008, 13h48
  3. Compatibilité MATLAB 7
    Par Bombernator dans le forum MATLAB
    Réponses: 7
    Dernier message: 05/12/2007, 09h37
  4. Compatibilité Matlab - FreeMat
    Par ol9245 dans le forum MATLAB
    Réponses: 1
    Dernier message: 01/07/2007, 13h05
  5. Réponses: 2
    Dernier message: 02/05/2007, 16h07

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