2012-11-27 85 views
0

我想用一個按鈕加載一個神經網絡對象文件,並在其他按鈕的回調函數中使用它。如何在MATLAB中的另一個回調函數中加載一個變量?

我沒有使用GUIDE,我正在以編程方式創建GUI。這裏是我的代碼:

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 

我裝了net變量,但我不能從Rcrd_and_Recog達到目標。我怎樣才能達到它?

回答

0

我看不到net0在哪裏聲明。 如果您想在不同的功能之間共享它們,您應該使用全局變量

+0

PLZ;有人幫我,我在這裏呆了兩天。 – user1646349

+0

你好,世界可以更多地描述你提到的過程;或者具體告訴我在哪裏我必須在我的代碼中進行編輯。 – user1646349

+0

對不起,遲到的迴應。如果它仍然相關,我會看到你想加載變量並將它保存在某個地方,然後在其他地方使用它。一種選擇是你似乎試圖做的是將它保存到其他對象,但是然後你需要一個標籤或一個文本框,但不僅僅是句柄。或者你可以通過在函數load_net開頭寫入「global net」來聲明它爲全局變量,這意味着你現在可以在其他函數中使用這個變量。然後在函數「Record_Recog」中寫入「全局網絡」,然後使用它,而不是其他地方不使用的net0。 – BioSP

相關問題