2015-12-02 78 views
0

我有一个功能,允许用户浏览和选择这样如何检查是否在Matlab使用多选时,选择一个文件?

[filename, pathname, filterindex] = uigetfile(... 
{ '*.jpg;*.jpeg;*.png','Images (*.jpg, *.jpeg, *.png)'; ... 
    '*.*', 'All Files (*.*)'}, ... 
    'Choose Class 1 DataSet', ... 
    'MultiSelect', 'on'); 

一些图片,我把浏览图像单元阵列

ChosenImages = strcat(pathname,filename); 

现在我有一个问题,如果用户只有进入一个图像,它不会返回当前图像作为一个单元,它返回每个字符的细胞,当我使用

length(ChosenImages); 

返回字符的数量链接! 还我试图

ischar(ChosenImages{1}) 

检查,如果一个cell是小区或没有,但它给了我一个错误了。

我能做些什么来检查,如果用户选择了一个或多张图片?

回答

0

您可以检查变量使用class功能通过uigetfile返回的type

  • 如果一个文件被选择,文件名char类型
  • ,如果一个以上的文件已被选择文件名cell类型
  • 的,如果用户中止的选择(通过按下 “取消”)文件名将型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 

希望这有助于。

相关问题