根据uigetfile 的文档,您可以指定可选的第三个输入参数DefaultName:
[FileName,PathName,FilterIndex] = uigetfile(FilterSpec,DialogTitle,DefaultName) 显示一个对话框
其中DefaultName指定的文件名出现在文件中
名称字段。 DefaultName 也可以是路径或路径/文件名。在
在这种情况下,uigetfile 在指定的文件夹中打开对话框
路径。您可以在DefaultName 中使用.、..、\ 或/
争论。要指定文件夹名称,请将
DefaultName \ 或 /。如果指定的路径不存在,
uigetfile 在当前文件夹中打开对话框。
您可以将上次打开的文件夹存储到您的 GUI 中,并在触发按钮回调时访问它。
例如:
function testgui
h.f = figure('MenuBar', 'none', 'NumberTitle', 'off', 'ToolBar', 'none');
h.b = uicontrol('Parent', h.f, 'Style', 'pushbutton', 'Units', 'Normalized', ...
'Position', [0.1 0.3 0.8 0.4], 'String', 'Pick a file');
h.l = uicontrol('Parent', h.f, 'Style', 'text', 'Units', 'Normalized', ...
'Position', [0.1 0.1 0.8 0.1], 'String', '');
setappdata(h.f, 'lastfolder', '');
h.l.String = sprintf('Last Directory: %s', '');
h.b.Callback = @(o, e) abutton(h);
end
function abutton(h)
lastfolder = getappdata(h.f, 'lastfolder');
[file, folder] = uigetfile({'*.jpg;*.gif;*.bmp','All Image Files'},' Select image', lastfolder);
if folder ~= 0
setappdata(h.f, 'lastfolder', folder);
h.l.String = sprintf('Last Directory: %s', folder);
end
end
请注意,当 GUI 关闭并重新打开时,此方法会重置为您的当前目录。