MATLAB - “clear -except a”只删除a

时间:2015-01-07 10:55:31

标签: matlab

无处不在,我认为表达式-except a应清除除a之外的所有变量。但是,如果我尝试它(MATLAB R2014a,在Linux Mint 17 Cinnamon 64-bit上运行),matlab只清除变量a(“-except a”显示为紫色,显然是作为字符串处理)。我尝试clear('-except a'),它没有做任何事情,并且'清除 - 除了' - 在“ - ”和“除”之间有一个空格,这会导致错误(参数太多)。

我做错了什么?

[编辑]

以下是我为clearvars获取的完整错误:

EDU>> a = 5;
EDU>> clearvars -except a;
Error using strjoin (line 14)
Expected input to be one of these types:

char

Instead its type was cell.

Error in clearvars>createPattern (line 187)
    pattern = sprintf('(%s)$', strjoin(variableArgs, '|'));

Error in clearvars (line 76)
    exceptVarPat = sprintf('(?!%s)', createPattern(exceptVarArgs, flags.regexpExcept));

2 个答案:

答案 0 :(得分:2)

由于名为" strjoin.m"的文件发生了问题。在PropertyGrid包中(我作为BCILab的依赖,SIFT内部的外部包,EEGLAB的插件)。由于function precedence order in MATLAB,调用了此函数而不是matlab / toolbox / strfun / strjoin.m中的函数。重命名插件文件解决了这个问题。

(虽然我不确定这是否是最好的解决方案,因为它会在PropertyGrid调用strjoin时提出未来错误的可能性。在这种情况下,我认为我会没事,但对最佳方法的评论在类似的情况下,将不胜感激。)

答案 1 :(得分:0)

或者您也可以使用正则表达式。例如,如果您有包含单词" path"的变量,您可以清除所有内容,不包括调用:

clear -regexp ^((?!path).)*$; % do not clear paths