无处不在,我认为表达式-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));
答案 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