2012-11-27 2 views
0

Je veux charger un fichier objet réseau neuronal avec un bouton-poussoir et l'utiliser dans la fonction de rappel d'un autre bouton-poussoir.Comment puis-je atteindre une variable chargée dans une autre fonction de rappel dans MATLAB?

Je n'utilise pas GUIDE, je crée l'interface graphique par programme. Voici mon code:

function ASR() 

figure('Name','Automatic Isolated Speech Rcognition System',....... 
    'Menubar','none',........ 
    'Color',[1 1 1]); 

Rcrd_and_Recog =uicontrol('Style','pushbutton',.... 
          'Units','normalized',.... 
          'Position',[0.75 0.75 0.20 0.05],.... 
          'String','START',.... 
          'Callback',@Record_Recog); 

LD_net = uicontrol('Style','pushbutton',.... 
          'Units','normalized',.... 
          'Position',[0.75 0.65 0.20 0.05],.... 
          'String','LOAD THE NET',.... 
          'Callback',@load_net); 

function load_net(varargin) 
    [file path]=uigetfile('*.mat','Select the M-file'); 
    if ~isequal(file, 0) 
     L=load(fullfile(path,file)); 
     Net=fieldnames(L); 
     net=Net{1}; 
     handles.net=net; 
    end 

function Record_Recog(varargin) 
    fs=16000; 
    y=wavrecord(1*fs,fs,1,'double'); 

    if length(y)<1157 
     result=sim(net0,cat(1,y,zeros(1157-length(y),1))) 
    else 
     result=sim(net0,y) 
    end 
end 

I chargé de la variable net mais je ne peux pas l'atteindre à partir Rcrd_and_Recog. Comment puis-je l'atteindre?

Répondre

0

Je ne vois pas où net0 est déclaré. Vous devez utiliser des variables globales si vous souhaitez les partager entre différentes fonctions

+0

PLZ; Quelqu'un m'aider je suis coincé ici pendant 2 jours. – user1646349

+0

Bonjour tout le monde pouvez-vous décrire le processus que vous avez mentionné? ou spécifiquement me dire où je dois éditer dans mon code. – user1646349

+0

Désolé pour la réponse tardive. Si c'est toujours pertinent, je vois que vous voulez charger la variable et l'enregistrer quelque part, puis l'utiliser dans un autre endroit. Une option est ce que vous avez essayé de faire est de l'enregistrer dans un autre objet, mais vous avez besoin d'une étiquette ou d'une boîte de texte, mais pas seulement handles.net = net; ou vous pouvez le déclarer comme variable globale en écrivant au début de la fonction load_net les mots "net global" cela signifie que vous pouvez maintenant utiliser cette variable dans d'autres fonctions. Ensuite, dans la fonction "Record_Recog", vous écrivez "global net", puis utilisez-le et non le net0 qui n'est utilisé nulle part ailleurs. – BioSP

Questions connexes