2013-08-01 35 views
0

我有一個關於如何編寫代碼來在Matlab中創建GUI的問題。我用一個簡單的按鈕創建了圖形界面。我想要的是,按下該按鈕,加載一個文本文件,然後加載一個圖像並創建不同的波段(這個過程是因爲它是一個帶有不同波段的多光譜圖像)。如果我在.m文件上執行,此代碼運行良好。這是代碼:用GUI在Matlab上加載文本文件

% --- Executes on button press in pushbutton1. 
function pushbutton1_Callback(hObject, eventdata, handles) 

Dates=load ('C:\Users\Desktop\dates.txt'); 
NombImages=load ('images.txt'); 
Nimages= numel(Dates); 
fileimg=NombImages(1); 
fileistr=int2str(fileimg); 
image1 = imread(fileistr); 
size=size(imagen1); nrows= size(1); 
ncolumns= size(2); 
nbands= size(3); 

Images = zeros(nrows, ncolumns, nbands, Mimages, 'uint16'); 
imagess = zeros(nrows, ncolumns, nbands); 

for image= 1: Nimages 
    fileimg=NombImagen(image); 
    fileistr=int2str(fileimg); 
    imagess = imread(fileistr); 
    Images(:,:,:,image)=imagess; 
end 

DN= double(Images); 

Band1 = Images(:,:,1); 
Band2 = Images(:,:,2); 
Band3 = Images(:,:,3); 

end 

% hObject handle to pushbutton1 (see GCBO) 
% eventdata reserved - to be defined in a future version of MATLAB 
% handles structure with handles and user data (see GUIDATA) 

也許它看起來有點複雜,但它是因爲圖像的格式(16位等)。我不想將樂隊可視化,只用該代碼加載它。

任何幫助,將不勝感激。在此先感謝,

+0

那麼,有什麼題...?你有沒有收到任何錯誤訊息? –

+0

不,問題是當我按下按鈕時,我收到以下錯誤:「???錯誤:文件:加載。M線:113柱:1 功能「pushbutton1_Callback」被關閉 用「結束」,但至少一個其它功能 定義不是「 要使用嵌套函數時避免混淆, 它是非法的同時使用。在同一個 文件中的約定「。 – user1578688

回答

1

在這裏我們去:

您收到一條錯誤消息,這表明,有一個「終點」在你的函數(按鈕回調-FCN)的結束。

在Matlab中有可能結束功能,而不與端:)

當使用例如GUIDE,這是默認結束它們。 GUIDE創建功能時不會以「結束」結束它們。

所以問題是:如果你把一個「結束」-statement somwhere結束一個函數,Matlab預計每一個函數結束後!

在你的特殊情況:

刪除「結束」,在你的代碼的末尾:

... 
Band1 = Images(:,:,1); 
Band2 = Images(:,:,2); 
Band3 = Images(:,:,3); 

end%<-this one :) 

當然另一種選擇是,每一個功能之後結束...

編輯

要在GUI中存儲數據,您可以(或應該)使用句柄結構。如何詳細使用在此說明:

TMW: guidata

一個簡短的版本:

手柄結構內存儲數據是這樣的:

handles.myVar = ... 

不要忘記更新結構通過此命令:

guidata(hObject,handles) 

For你應該是這樣的:

handles.Band1=Band1; %or directly: ...=Images(:,:,1); 
... 
guidata(hObject,handles) 

和以後你可以在另一個函數中檢索數據(即知道課程的手柄結構!)就像這樣:

handles.Band1 
+0

謝謝Lucius!我刪除了「結束」,原則上不生成任何錯誤消息,但它不會產生任何結果。也許,我必須寫一個命令輸出嗎?我已經運行了「dbstop if error」命令,但它也不會生成任何消息。 – user1578688

+0

這是另一個問題...我會添加一些關於這方面的信息... –

+0

哇!感謝Lucius! ;)昨天我嘗試在最後添加該命令「set(hObject,eventdata)」,但我一直收到一個錯誤,但現在它工作。謝謝! – user1578688