目前我正在开展一个项目,我需要一次读取9张图像,并用matlab gui在9轴上显示它们。 我尝试了一些代码,但它没有用。
[file,folder,FilterIndex] = uigetfile('*.*','MultiSelect','on');
handles.img=cell(1,length(file));
for ifile = 1:length(file)
filename=fullfile(folder,file(ifile).name);
image=imread(filename);
axes(handles.axes{ifile});
imshow(image);
handles.img{ifile}=image
end
这是错误消息:
??? Improper index matrix reference.
Error in ==> guikedelaizulfa>open_Callback at 1098
filename=fullfile(folder,file(ifile).name);
Error in ==> gui_mainfcn at 96
feval(varargin{:});
Error in ==> guikedelaizulfa at 42
gui_mainfcn(gui_State, varargin{:});
Error in ==>
@(hObject,eventdata)guikedelaizulfa('open_Callback',hObject,eventdata,guidata(hObject))
??? Error while evaluating uicontrol Callback
感谢您的帮助
答案 0 :(得分:0)
问题在于您使用uigetfile
的输出,就好像它与dir
的输出相同。 uigetfile
的输出只是
[files, folder, filterIndex] = uigetfile('*.*','MultiSelect','on');
如果查看文件的值,您会看到它是一个文件名的单元格数组,而不是就像您正在处理的那样。
disp(files)
如果我们将其用于您当前的代码:
[files, folder, filterIndex] = uigetfile('*.*','MultiSelect','on');
handles.img = cell(1, numel(files));
for ifile = 1:numel(files)
filename = fullfile(folder, files{ifile});
img = imread(filename);
imshow(img, 'Parent', handles.axes{ifile});
handles.img{ifile} = img;
end
如果您没有轴手柄但只有轴标签,则可以在循环内执行以下操作
ax = findall(gcf, 'type', 'axes', 'tag', sprintf('axes%d', ifile));
imshow(img, 'Parent', ax);