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

时间:2013-08-01 07:15:48

标签: matlab user-interface

我有一个问题,我如何编写代码来在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位等)。我不想将这些乐队可视化,只是用该代码加载它。

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

1 个答案:

答案 0 :(得分:1)

我们走了:

你收到一条错误消息,表示你的函数末尾有一个“结束”(pushbutton-callback-fcn)。

在Matlab中,可以结束函数而不以结尾结束它们:)

例如,使用GUIDE时,这是默认设置。 GUIDE创建函数而不以“结束”结束它们。

所以问题是:如果你把一个“结束”语句放在一个结束函数的地方,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