2013-02-23 82 views
0

我正在使用具有自定义FilterSpecs的uigetfile。这里是一句话:使用uigetfile时从文件类型中删除'AllFiles'

[FileName,PathName,FilterIndex] = uigetfile({'*.wav';'*.mp3'},'Open Audio File'); 

正如你可以看到我的FILTERSPEC是{'*.wav';'*.mp3'}和这工作完全正常。我的问题很简单,就是matlab总是将AllFiles(*.*)添加到我的FilterSpecs中。我在Matlab文档中进行了搜索,它的字面意思是: “当FilterSpec是一个字符串时,uigetfile将所有文件()附加到文件类型中。”,但问题是,我没有看到另一种方式来指定自定义FilterSpec,而不使用strings.Sorry如果这会导致一个愚蠢的问题。 在此先感谢

回答

0

无法从uigetfile()(轻松)删除'AllFiles',因为它总是由MATLAB添加。

如果您确实想要这样做,您必须复制uigetputfile_helper()代码(例如 MYuigetputfile_helper())并更改它。然后你从你的MYuigetfile()中调用它 - 这里有同样的想法。

的变化将左右线311和在我的版本从uigetputfile_helper() 319,即

% Now add 'All Files' appropriately. 
if (addAllFiles) 
    % If a string, create a cell array and append '*.*'. 
    if (~iscell(returned_filter)) 
    returned_filter = {returned_filter; '*.*'}; 
    % If it is a cell array without descriptors, add '*.*'. 
    elseif (size(returned_filter, 2) == 1) 
    returned_filter{end+1} = '*.*'; 
    end 
end 

希望帮助......玩得开心!

0

如果从以前的海报的答案备份的几行,你会看到一个评论:

我们要添加“所有文件”在任何情况下,除非我们有一个描述符的单元阵列。

对uigetputfile_helper的这条评论对我有帮助。只需在您打电话uigetfile时间描述你的文件类型,你不会看到All Files (*.*)

例子:

[fname,pname] = uigetfile({'*.m','MATLAB Code (*.m)';'*.mat','MATLAB Data (*.mat)'});