使用GUI在Matlab上加载文本文件

使用GUI在Matlab上加载文本文件,matlab,user-interface,Matlab,User Interface,我有一个问题,关于如何在Matlab中编写代码来创建GUI。我用一个简单的按钮创建了图形界面。我希望,按下那个按钮,加载一个文本文件,在循环之后,加载一个图像并创建不同的波段(这个过程是因为它是一个具有不同波段的多光谱图像)。如果我在一个.m文件上执行,这段代码运行得很好。代码如下: % --- Executes on button press in pushbutton1. function pushbutton1_Callback(hObject, eventdata, handles)

我有一个问题,关于如何在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位等)。我不想让乐队形象化,只想用代码加载它

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

我们开始:

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

在Matlab中,可以结束函数,而不用结束:)

例如,使用指南时,这是默认值。指南创建函数时不以“end”结尾

所以问题是:如果你把一个“end”语句放在函数的结束位置,Matlab希望每个函数都有一个结束

在您的特殊情况下:

删除代码末尾的“end”:

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

end%<-this one :)
不要忘记使用以下命令更新结构:

guidata(hObject,handles)
对你来说,它应该是这样的:

handles.Band1=Band1; %or directly: ...=Images(:,:,1);
...
guidata(hObject,handles)
稍后,您可以在另一个函数中检索数据(当然,它知道句柄结构!),如下所示:

handles.myVar = ...
handles.Band1

那么,问题是什么。。。?您是否收到任何错误消息?否,问题是,当我按下按钮时,我收到以下错误:“???错误:文件:load.m行:113列:1函数“pushbutton1_Callback”以“end”关闭,但至少有一个其他函数定义未关闭。”为避免在使用嵌套函数时产生混淆,在同一个文件中使用这两种约定是非法的。”谢谢Lucius!我删除了“end”,原则上不会生成任何错误消息,但不会生成任何结果。也许,我必须编写命令输出吗?我已经运行了“dbstop if error”“命令,但它也不会生成任何消息。哇!谢谢卢修斯!;)昨天我尝试在“set(hObject,eventdata)”的末尾添加commmand,但我一直收到一个错误,但现在它起作用了。谢谢