2016-03-02 85 views
2

我已經使用導入工具將.txt文件數據導入爲基本工作區的單元格數組。從gui運行腳本文件

現在我有使用GUIDE創建的GUI按鈕,它將運行一個腳本,該腳本利用基礎工作區變量創建另一個文件。

function pushbutton1_Callback(hObject, eventdata, handles) 
createfile; 

當我使用按鈕其示出了未定義的函數或變量,即使該變量是在基工作區運行的CreateFile。

但是,當我在命令窗口中運行相同的文件一切都很好。任何建議爲什麼會發生這種情況

+2

每個回調(從按鈕調用的函數)都有它自己的變量工作區,添加路徑是你的文件位於你的回調中,並且應該工作。 –

+1

See:[Base and Function Workspaces](http://www.mathworks.com/help/matlab/matlab_prog/base-and-function-workspaces.html) – excaza

+0

所以我應該將基本工作區中存在的變量包含到函數工作區中? – redumpt

回答

1

GUI擁有自己的工作空間,因此您必須在GUI初始化時提交基本工作空間變量。例如:yourGUI(yourData);

編輯GUI的OpeningFcn到這樣的事情:

handles.InputData= varargin(1); 
%only for clear arrangement 
handles.InputData = handles.InputData{1, 1}; 

隨意命名InputData,但不要忘記更新把手結構現在

guidata(hObject, handles); 

你可以在所有CallbackFunction中訪問handles.InputData,但是請注意,在handles.InputData的每次更改後您必須登錄guidata(hObject, handles);。請閱讀documentation瞭解更多信息。

+0

將嘗試此解決方案,我會讓你知道.. – redumpt

+0

跟着你的第一個兩行,並獲得基地worksapce變量回調使用evalin ...這工程! – redumpt

0

哪個函數/變量是未定義的?什麼是文件的名稱和你分配給哪個變量?我猜(字面上),假設pushbutton1_Callback輸入中沒有一個是你提到的變量,如下所示:

函數和命令窗口不共享相同的工作區。如果你想從你的函數中「看到」某些東西,你必須將它包含在輸入中。