0

我有一个关于如何编写代码以在 Matlab 中创建 GUI 的问题。我用一个简单的按钮创建了图形界面。我想要那个,按下那个按钮,加载一个文本文件,然后循环,加载一个图像并创建不同的波段(这个过程是因为它是一个具有不同波段的多光谱图像)。如果我在 .m 文件上执行,此代码运行良好。这是代码:

% --- 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 位等)。我不想可视化乐队,只用该代码加载它。

任何帮助,将不胜感激。提前致谢,

4

1 回答 1

1

开始了:

您收到一条错误消息,表明您的函数(按钮回调-fcn)的末尾有一个“结束”。

在 Matlab 中,可以在不以 end 结束的情况下结束函数 :)

例如,当使用 GUIDE 时,这是默认设置。GUIDE 创建函数时不以“end”结尾。

所以问题是:如果你在某处放置一个“结束”语句来结束一个函数,Matlab 期望在每个函数之后结束!

在您的特殊情况下:

删除代码末尾的“结束”:

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

end%<-this one :)

当然,另一种选择是,在每个函数之后结束......

编辑

要将数据存储在 GUI 中,您可以(或应该)使用句柄结构。这里详细解释了如何使用它:

TMW: guidata

一个简短的版本:

在句柄结构中存储数据,如下所示:

handles.myVar = ...

并且不要忘记通过以下命令更新结构:

guidata(hObject,handles)

对你来说,它应该看起来像:

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

稍后您可以在另一个函数中检索数据(当然知道句柄结构!),就像这样:

handles.Band1
于 2013-08-05T06:46:51.253 回答