通常在运行长内存昂贵的程序时,我想清除除了一些特定变量之外的所有内容。如果只想删除一些变量clear varA varB
可以使用,但是删除除了这些特定变量以外的所有变量呢?
答案 0 :(得分:20)
如上所述,clearvars
包含一种语法,用于在清除余数时保留工作空间中的变量:
a = 1; b = 1; c = 1; d = 1;
keepvars = {'c', 'd'};
clearvars('-except', keepvars{:});
其功能如预期。
a1 = 1; a2 = 1; b = 1; c = 1;
keepvars = 'a\d'; % regex pattern
clearvars('-except', '-regexp', keepvars);
正如预期的那样保留a1
和a2
。
答案 1 :(得分:10)
利用who
和whos
都有可以存储在变量中的返回值这一事实。前者返回字符串的单元格数组,后者是结构数组。根据你的需要,前者就足够了:
%// don't delete these '
keepvars = {'varA','varB'};
%// delete these
delvars = setdiff(who,keepvars);
clear(delvars{:},'delvars');