如何清除所有变量,但需要清除所有变量

时间:2016-01-08 12:01:42

标签: matlab

通常在运行长内存昂贵的程序时,我想清除除了一些特定变量之外的所有内容。如果只想删除一些变量clear varA varB可以使用,但是删除除了这些特定变量以外的所有变量呢?

2 个答案:

答案 0 :(得分:20)

如上所述,clearvars包含一种语法,用于在清除余数时保留工作空间中的变量:

a = 1; b = 1; c = 1; d = 1;
keepvars = {'c', 'd'};

clearvars('-except', keepvars{:});

其功能如预期。

clear一样,它也可以容纳regexp匹配:

a1 = 1; a2 = 1; b = 1; c = 1;
keepvars = 'a\d'; % regex pattern

clearvars('-except', '-regexp', keepvars);

正如预期的那样保留a1a2

答案 1 :(得分:10)

利用whowhos都有可以存储在变量中的返回值这一事实。前者返回字符串的单元格数组,后者是结构数组。根据你的需要,前者就足够了:

%// don't delete these '
keepvars = {'varA','varB'};

%// delete these
delvars = setdiff(who,keepvars);
clear(delvars{:},'delvars');