uigetfile函数的使用(打开检索文件对话框)

转自:http://hua1547.blog.163.com/blog/static/17070734720108822522954/

此函数的用法为

[FileName,PathName,FilterIndex] = uigetfile(FilterSpec,DialogTitle,DefaultName)

FileName:返回的文件名

PathName:返回的文件的路径名

FilterIndex:选择的文件类型

FilterSpec:文件类型设置

DialogTitle:打开对话框的标题

DefaultName:默认指向的文件名

例子:(接来自matlab的帮助)

1.最简单的形式,只设置了一种可选择的文件类型

[FileName,PathName] = uigetfile('*.m','Select the M-file');

2.设置多种文件类型

[filename, pathname] = uigetfile({'*.m';'*.mdl';'*.mat';'*.*'},'File Selector');

3.可以为文件类型设置说明,注意书写格式

[filename, pathname] = uigetfile( ...
{'*.m;*.fig;*.mat;*.mdl','MATLAB Files (*.m,*.fig,*.mat,*.mdl)';
'*.m', 'M-files (*.m)'; ...
'*.fig','Figures (*.fig)'; ...
'*.mat','MAT-files (*.mat)'; ...
'*.mdl','Models (*.mdl)'; ...
'*.*', 'All Files (*.*)'}, ...
'Pick a file');

4.可返回选择的文件类型序号,并且可以设置文件多选,设置文件多选时注意,当只选了一个文件时,返回的filename为字符串,选择多个文件时,返回的元胞类型。

[filename, pathname, filterindex] = uigetfile( ...
{ '*.mat','MAT-files (*.mat)'; ...
'*.mdl','Models (*.mdl)'; ...
'*.*', 'All Files (*.*)'}, ...
'Pick a file', ...
'MultiSelect', 'on');

5.可以设置默认文件名

uigetfile({'*.jpg;*.tif;*.png;*.gif','All Image Files';...
'*.*','All Files' },'mytitle',...
'C:\Work\myfile.jpg')

一点小技巧:当返回了一个文件的时候,可以用fullfile将路径和文件名组合起来,如

[filename, pathname] = uigetfile('*.m', 'Pick an M-file');
if isequal(filename,0)
disp('User selected Cancel')
else
disp(['User selected', fullfile(pathname, filename)])
end

fullfile的用法如下

f = fullfile('C:', 'Applications', 'matlab', 'myfun.m')
f = C:\Applications\matlab\myfun.m

%修改图片的大小
%%
clc
clear all
close all
%%
scale=inputdlg('缩放比(大于1为放大,小于1为缩小)','请输入缩放比',1,{'0.5'});
%%
[filename, pathname] = uigetfile( ...
{'*.jpg;*.tif;*.png;*.gif','All Image Files';...
'*.*','All Files' },...
'请选择要修改的图片(可多选)', ...
'MultiSelect', 'on');
%%
if ~iscell(filename)
filename1{1}=filename;
else
filename1=filename;
end
%%
for i=1:length(filename1)
image=imread(strcat(pathname,filename1{i}));
image_resize=imresize(image,eval_r(scale{1}));
imwrite(image_resize,strcat(pathname,datestr(now, 'mmddHH'),filename1{i}));
end

其中的inputdlg函数实现一个要求用户输入信息的对话框,用法如下

answer = inputdlg(prompt,dlg_title,num_lines,defAns,options)

prompt:输入文本框的标签

dlg_title:对话框的标题

num_lines:输入文本框的行数

defAns:默认的文本框内容

options:一些可选的对话框选项

prompt={'Enter the matrix size for x^2:',...
'Enter the colormap name:'};
name='Input for Peaks function';
numlines=1;
defaultanswer={'20','hsv'};

options.Resize='on';
options.WindowStyle='normal';
options.Interpreter='tex';

answer=inputdlg(prompt,name,numlines,defaultanswer,options);

返回为字符串,如果想转化为数字,可以是使用函数eval。

另外input函数也可以实现用户信息输入,不过是在命令行中输入,也很简单、常用。

转自:http://wiki.ilovematlab.cn/doc-view-463.html

uigetfile显示一个对话框,列举出当前目录下的文件名供用户检索或者修改将要被打开的文件名,如果该文件名正确且存在,用户点击open按钮时,uigetfile返回文件名,否则uigetfile将弹出一个显示错误信息对话框。这时用户可以进入选中另一个文件,或者点击cancel,如果用户点击cancle或者关闭了对话框窗口,uigetfile返回0,uigetfile执行成功并不是打开了一个文件,仅仅是返回了用户选中的且存在的文件名。

注意:对话框防止用户在作出响应前免受其他窗口的相互影响。为了等待MATLAB程序执行,使用uiwait函数。

[FileName,PathName,FilterIndex] = uigetfile(FilterSpec)

只显示扩展名与filterspec相同的文件。igetfile函数在类型列表中附加了‘All files’类型文件。输入参数filterspec可以是一个字符串或者一个元胞数组字符串,也可以是通配符‘*’。

●如果输入变量fileterspec是一个包含文件名及其扩展名的字符串,文件名将被选中且显示在文件名编辑框中,而且该文件的扩展名将作为默认的文件后缀。默认显示在文件类型下拉菜单中。

●如果输入变量filterspec是一个包含路径名的字符串,路径包括:'.' ,'..'或者'/' 。例如,'../*.m'列出了所有当前目录中的m文件。

●如果输入变量filterspec是一个元胞数组字符串,第一列为文件扩展名列,第二列为扩展名对应的说明列,这个说明列将替换文件类型下拉菜单中的标准说明列。说明列不能为空,例2和例3举例说明了元胞数组作为输入变量filterspec的用法。

●如果输入变量filterspec未被指定,uigetfile使用默认文件类型(all files),用户点击open按钮后,如果文件名存在,uigetfile在filename和path中分别返回该文件的名称和路径。如果用户点击取消或关闭对话窗口,filename 和path为0。

[FileName,PathName,FilterIndex] = uigetfile(FilterSpec,DialogTitle)

DIalogTitle为对话框的标题,为了使用默认文件类型且指定一个对话框标题,输入代码uigetfile('',DialogTitle)

[FileName,PathName,FilterIndex] = uigetfile(FilterSpec,DialogTitle,DefaultName)

显示一个对话框,在该对话框中文件名或路径名被defaultname指定,文件名显示在file name编辑框中,dEfaultname可以是一个路径,或者是路径/文件名。在这种情况下uigetfile在被该路径指定的目录中打开对话框,查看例6,注意你可以在Defaultename变量中使用'.','..',或者'/'如果指定路径不存在,uigetfile打开当前目录下的对话框。
[FileName,PathName,FilterIndex] = uigetfile(...,'MultiSelect',selectmode)

如果对话框被用来选择多种类型文件,该语句用来设置多选模式,变量selectmode可选值为on和off(默认),如果'multiselect'打开且用户在对话框中选择了多个文件,这时filename为一个元胞数组字符串,每个元素代表一个被选文件名元胞数组中的文件名的分类命令与你的操作平台相关。因为多选总是在相同目录下,所以pathname总是一个代表唯一目录的字符串。

如果用户在文件名中包括'*','?'两种通配符之一,uigetfile在用户点击open时不会做出响应(这个就是说文件名编辑框空白时,点击open,uigetfile不会响应)

example1:
[FileName,PathName] = uigetfile('*.m','选择一个M文件');下图显示了一个供用户检索的对话框,用法说明列举了matlab中处于被选路径中的所有M文件
被选文件名称和路径被分别返回filename和pathname两个参数中,注意当filterspec是一个字符串时,uigetfile在文件类型复选框中附加了’All Files(*.*)'选项。

example2:

[filename, pathname] = ...
uigetfile({'*.m';'*.mdl';'*.mat';'*.*'},'选择文件);为创建多种文件类型并出现在文件类型列表框中,使用分号分隔扩展名。注意uigetfile会为每个已知的文件类型显示默认说明语句,比如像'simulink Models'是.mdl类型文件的说明。

example3:
如果你想要创建不同于默认类型的文件,使用元胞数组,这个例子也是matlba 文件和其他文件类型的联系关系的说明。
[filename, pathname] = uigetfile( ...
{'*.m;*.fig;*.mat;*.mdl','MATLAB Files (*.m,*.fig,*.mat,*.mdl)';

'*.m', 'M-files (*.m)'; ...
'*.fig','Figures (*.fig)'; ...
'*.mat','MAT-files (*.mat)'; ...
'*.mdl','Models (*.mdl)'; ...
'*.*', 'All Files (*.*)'}, ...
'Pick a file');

元胞数组第一列包括文件扩展名,而第二列包括你想要列出的文件类型说明。

注意第一列包含若干扩展名由分号分割,所有的这些和说明语句'MATLAB Files (*.m,*.fig,*.mat,*.mdl)'相关联。

example 4
下面的程序用于检查文件的扩展名并且显示打开操作结果信息[filename, pathname] = uigetfile('*.m', 'Pick an M-file');
if isequal(filename,0)
disp('User selected Cancel')
else
disp(['User selected', fullfile(pathname, filename)])

end

example 5

本例创建一系列不同于默认类型的文件类型并给出说明,能够选择多种文件,用户可以通过点击每个文件或者使用快捷键shift,ctrl选择多种文件[filename, pathname, filterindex] = uigetfile( ...
{ '*.mat','MAT-files (*.mat)'; ...
'*.mdl','Models (*.mdl)'; ...
'*.*', 'All Files (*.*)'}, ...
'Pick a file', ...
'MultiSelect', 'on');

example 6

本例使用默认变量defaultname指定一个起始路径和一个默认文件名 uigetfile({'*.jpg;*.tif;*.png;*.gif','All Image Files';...'*.*','All Files' },'选择文件',...'C:\Documents and Settings\O\My Documents\My Pictures')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值