2015-04-28 131 views
0

我正在開發一個圖形用戶界面,我希望用戶以文本或Excel格式輸入。當他點擊我的GUI上的「上傳文件」按鈕時,文件瀏覽器將打開,他將選擇文本文件。一旦他點擊打開文件應該在工作區,所以我的下一個代碼將採取值給結果。在Matlab中加載數據GUI

我所做的是:有按鈕

[filename,pathname] = uigetfile('*.txt') 
loaddata = fullfile(pathname,filename) 
data = load(loaddata) 
A = data(:,1) 
B = data(:,2) 
C = data(:,3) 
D = data(:,4) 
handles.input1 = A; 
handles.input2 = B; 
handles.input3 = C; 
handles.input4 = D; 

下此代碼現在的瀏覽器打開時,我可以選擇的有4列和2000行數據的.txt文件。但是當我回到工作空間時,我看不到任何工作空間,但是在命令窗口中的第二列中的所有值!

+0

如果你想在GUI中顯示一些東西在工作區中顯示,你必須使用'assignin('base','you_choose_name_for_var_in_workspace',var_name_in_GUI)',其中'var_name_in_GUI'實際上應該是你的'句柄。 '。查看更多這裏:http://www.mathworks.com/help/matlab/ref/assignin.html – scmg

回答

0

您可以使用setappdata和關聯的getappdata來存儲應用程序定義的數據,並從其他位置(例如從GUI或基本工作區)中檢索它。

對於您的情況,您可以將AB,CD存儲在基工作區中,以便它們可以從其他腳本中使用。如果需要,您還可以存儲handles結構。

舉個例子,你在GUI代碼看起來是這樣的:

[filename,pathname] = uigetfile('*.txt') 
loaddata = fullfile(pathname,filename) 
data = load(loaddata) 

%// Store in the base workspace (i.e. the "0") 
setappdata(0,'AllData',data); 

請注意,你可以寫你想要的名字什麼的,只要您檢索與利用getappdata同名變量。在這裏,我使用了AllData,但您也可以將其保留爲data

因此,在正在運行的其他腳本,使用getappdata像這樣:

DataInScript = getappdata(0,'AllData'); 

    A = AllData(:,1) 
    B = AllData(:,2) 
    C = AllData(:,3) 
    D = AllData(:,4) 

所以,現在,這取決於你是否已經分配A,B,C和d可以直接從AllData訪問您的數據。