我们在使用matlab写GUI的时候有时候需要选择导入的文件,这样首先就要获得文件的文件名和路径,这就要用到uigetfile() 函数,它可以弹出一个选择文件的提示框,该函数的使用方法如下:
file = uigetfile
[file,path] = uigetfile
[file,path,indx] = uigetfile
___ = uigetfile(filter)
___ = uigetfile(filter,title)
___ = uigetfile(filter,title,defname)
___ = uigetfile(___,‘MultiSelect’,mode)

说明:

  1. file = uigetfile 打开一个模态对话框,其中列出了当前文件夹中的文件。用户可以在这里选择或输入文件的名称。如果文件存在并且有效,当用户点击打开时,uigetfile 将返回文件名。如果用户点击取消或窗口关闭按钮 (X),uigetfile 将返回 0。
  2. 当用户点击打开时,[file,path] = uigetfile 将返回文件的名称和路径。如果用户点击取消或窗口关闭按钮 (X),uigetfile 将为两个输出参数都返回 0。
  3. 当用户点击打开时,[file,path,indx] = uigetfile 将返回在对话框中选择的筛选器的索引。
  4. ___ = uigetfile(filter) 指定文件扩展名,根据该扩展名筛选对话框中显示的文件。可以将此语法与上述语法中的任何输出参数结合使用。通常,只显示文件扩展名匹配的文件。
  5. ___ = uigetfile(filter,title) 指定对话框标题。要使用默认文件筛选器进行筛选,但指定自定义标题,请使用空引号作为筛选器值。例如:
    file = uigetfile(’’,‘Select a File’)
  6. ___ = uigetfile(filter,title,defname) 为文件名字段指定默认文件名。
  7. ___ = uigetfile(___,‘MultiSelect’,mode) 指定用户是否可以选择多个文件。将模式设置为 ‘on’ 将允许进行多选。默认情况下设置为 ‘off’。
    下面举例说明:

1.普通形式 [file,path] = uigetfile(’*.m’)

[file,path] = uigetfile('*.m');
if isequal(file,0)
   disp('User selected Cancel');
else
   disp(['User selected ', fullfile(path,file)]);
end

在这里插入图片描述
输出结果: User selected H:\Documents\MyCode\surf.m

[file,path,indx] = uigetfile;
if isequal(file,0)
   disp('User selected Cancel')
else
   disp(['User selected ', fullfile(path, file),... 
         ' and filter index: ', num2str(indx)])
end

在这里插入图片描述这里的 index 返回的是选中的类型名的排列序号,上图中index=3

[file,path] = uigetfile('*.m');

这行代码会默认显示.m文件,如果你要显示.txt文件,只需要将.m换成.txt即可,如果要同时显示多行不同类型文件,则用元胞数组表示,例如:{’.m’;’.txt’;……}

在这里插入图片描述2. 给文件框加标题

[file,path] = uigetfile({'*.m';'*.slx';'*.mat';'*.*'}, '标题名');

在这里插入图片描述3. 给筛选器加备注

[file,path,indx] = uigetfile( ...
{'*.m;*.mlx;*.fig;*.mat;*.slx;*.mdl',...
    'MATLAB Files (*.m,*.mlx,*.fig,*.mat,*.slx,*.mdl)';
   '*.m;*.mlx','Code files (*.m,*.mlx)'; ...
   '*.fig','Figures (*.fig)'; ...
   '*.mat','MAT-files (*.mat)'; ...
   '*.mdl;*.slx','Models (*.slx, *.mdl)'; ...
   '*.*',  'All Files (*.*)'}, ...
   'Select a File');

在这里插入图片描述
对应规则很简单,筛选器一列,备注一列,效果如下:
在这里插入图片描述
4. 指定默认文件名

 [file,path] = uigetfile('*.png', 'Select an icon file','icon.png')  
 % 注意,前面需要有窗口名称,后面才是默认文件名

在这里插入图片描述
5. 指定文件路径

 [file,path] = uigetfile('*.png',...
               'Select an icon file','icon.png')

这个 要注意,如果你要指定筛选器,顺序是 筛选器+标题+路径(可以在路径后面加默认文件名)

[file,path,indx] = uigetfile( ...
{'*.m;*.mlx;*.fig;*.mat;*.slx;*.mdl',...
    'MATLAB Files (*.m,*.mlx,*.fig,*.mat,*.slx,*.mdl)';
   '*.m;*.mlx','Code files (*.m,*.mlx)'; ...
   '*.fig','Figures (*.fig)'; ...
   '*.mat','MAT-files (*.mat)'; ...
   '*.mdl;*.slx','Models (*.slx, *.mdl)'; ...
   '*.*',  'All Files (*.*)'}, ...
  'Select a File', 'C:\Users\75549\Desktop\第二次实验\name.png');

在这里插入图片描述
6. 设置多选
你会发现上面的界面都不能多选的,如果需要多选,还要在参数中加上 ‘MultiSelect’, ‘on’,比如:

[file,path] = uigetfile('*.m',...
   'Select One or More Files', ...
   'MultiSelect', 'on');
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐