使用uigetfile时从文件类型中删除“AllFiles”

时间:2013-02-23 05:58:27

标签: matlab matlab-figure matlab-guide

我正在使用带有一组自定义FilterSpecs的uigetfile。这是一句话:

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

正如您所看到的,我的FilterSpec是{'*.wav';'*.mp3'},这非常合适。我的问题很简单,就是matlab总是将AllFiles(*.*)附加到我的FilterSpecs。我在Matlab文档中搜索过,它字面上说: 当strongSpec是一个字符串时,“uigetfile将所有文件()附加到文件类型。”,但问题是我没有看到指定自定义的另一种方法FilterSpec不使用strings.Sorry如果这会导致一个愚蠢的问题。 提前致谢

2 个答案:

答案 0 :(得分:0)

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

如果你真的想这样做,你必须复制uigetputfile_helper()代码(到 例如MYuigetputfile_helper())并进行更改。然后你从MYuigetfile() - 同样的想法来称呼它。

我的版本uigetputfile_helper()即第311和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

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

答案 1 :(得分:0)

如果您从上一张海报的答案中备了几行,您会看到评论:

  

我们要添加“所有文件”。在所有情况下,除非我们有一个带描述符的单元格数组。

此评论位于uigetputfile_helper的第245行。只需在致电uigetfile时描述您的文件类型,您就不会看到All Files (*.*)

示例:

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