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