在matlab中使用MultiSelection时如何检查是否选择了一个文件?
How to check if one file selected when using MultiSelection in matlab?
我有一个功能可以让用户像这样浏览和选择一些图片
[filename, pathname, filterindex] = uigetfile( ...
{ '*.jpg;*.jpeg;*.png','Images (*.jpg, *.jpeg, *.png)'; ...
'*.*', 'All Files (*.*)'}, ...
'Choose Class 1 DataSet', ...
'MultiSelect', 'on');
然后我将浏览过的图像放在一个元胞数组中
ChosenImages = strcat(pathname,filename);
现在我有一个问题,如果用户只输入一张图片,它不会 return 这张图片作为一个单元格,而是 return 每个字符作为单元格,当我使用
length(ChosenImages);
它 return 是 link 中的字符数!
我也试过
ischar(ChosenImages{1})
检查一个单元格是否是一个单元格,但它也给我一个错误。
如何检查用户选择的是一张图片还是多张图片?
您可以使用 class
函数检查 uigetfile
返回的变量 filename 的 type
。
- 如果选择了一个文件,文件名将是
char
类型
- 如果选择了多个文件文件名将是
cell
类型
- 如果用户中止选择(按 "Cancel"),文件名 的类型将是
double
您可以定义一个 switch
块来处理不同的类型:
[filename, pathname, filterindex] = uigetfile( ...
{ '*.jpg;*.jpeg;*.png','Images (*.jpg, *.jpeg, *.png)'; ...
'*.*', 'All Files (*.*)'}, ...
'Choose Class 1 DataSet', ...
'MultiSelect', 'on')
switch(class(filename))
case 'double'
disp('Selection aborted')
case 'char'
disp('Only one image has been selected')
ChosenImages = strcat(pathname,filename)
case 'cell'
n_img=length(filename)
disp([num2str(n_img) ' images have been selected'])
for i=1:n_img
ChosenImages = strcat(pathname,filename(i))
end
otherwise
disp('Unexpected output')
end
希望对您有所帮助。
我有一个功能可以让用户像这样浏览和选择一些图片
[filename, pathname, filterindex] = uigetfile( ...
{ '*.jpg;*.jpeg;*.png','Images (*.jpg, *.jpeg, *.png)'; ...
'*.*', 'All Files (*.*)'}, ...
'Choose Class 1 DataSet', ...
'MultiSelect', 'on');
然后我将浏览过的图像放在一个元胞数组中
ChosenImages = strcat(pathname,filename);
现在我有一个问题,如果用户只输入一张图片,它不会 return 这张图片作为一个单元格,而是 return 每个字符作为单元格,当我使用
length(ChosenImages);
它 return 是 link 中的字符数! 我也试过
ischar(ChosenImages{1})
检查一个单元格是否是一个单元格,但它也给我一个错误。
如何检查用户选择的是一张图片还是多张图片?
您可以使用 class
函数检查 uigetfile
返回的变量 filename 的 type
。
- 如果选择了一个文件,文件名将是
char
类型 - 如果选择了多个文件文件名将是
cell
类型 - 如果用户中止选择(按 "Cancel"),文件名 的类型将是
double
您可以定义一个 switch
块来处理不同的类型:
[filename, pathname, filterindex] = uigetfile( ...
{ '*.jpg;*.jpeg;*.png','Images (*.jpg, *.jpeg, *.png)'; ...
'*.*', 'All Files (*.*)'}, ...
'Choose Class 1 DataSet', ...
'MultiSelect', 'on')
switch(class(filename))
case 'double'
disp('Selection aborted')
case 'char'
disp('Only one image has been selected')
ChosenImages = strcat(pathname,filename)
case 'cell'
n_img=length(filename)
disp([num2str(n_img) ' images have been selected'])
for i=1:n_img
ChosenImages = strcat(pathname,filename(i))
end
otherwise
disp('Unexpected output')
end
希望对您有所帮助。