如何声明变量免疫清除所有?

use*_*919 9 matlab clear

无论如何,在MatLab中声明变量免疫是否全部清除?我想到的一个解决方案是保存变量并在需要时重新打开它们.谁能想到更优雅的解决方案?

编辑:让我更彻底地解释我的问题,我本来应该做的事情; 对不起

我必须使用一些"黑匣子"中间代码(其中一些可能是mex文件)运行一些例程.假设我不能详述这些代码,这将是一件好事.我可以改变其中的一些,但这样做会很昂贵; 例如,我不知道清楚所有事情发生在哪里.我知道我可能会要求太多,但你永远不会知道.

the*_*alk 9

相反,保护变量,考虑使用clearvars-except标志.无论如何clear all应该避免使用,除非你真的需要清除ALL.

clearvars -except v1 v2 ... 清除除-except后指定的变量以外的所有变量

这个答案/问题可以为您提供进一步的灵感.


用法:

a = 1;
b = 2;
c = 3;

vars2keep = {'a','b'}
clearvars('-except',vars2keep{:})
Run Code Online (Sandbox Code Playgroud)

要么

clearvars -except a b
Run Code Online (Sandbox Code Playgroud)

并且who将返回:

Your variables are:

a  b  
Run Code Online (Sandbox Code Playgroud)


hor*_*ler 5

您无法保护单个变量,但可以mlock用来防止清除M文件函数或mex函数,以及persistent在其中定义的任何变量.

clear all当直接使用命令窗口或编写快速脚本时,这真的很方便.它不仅仅是清除变量.它不能代替理解代码的工作方式或使用函数来限制变量范围.如果您有一个不再使用的大型数组,您可以明确告诉Matlab清除它以节省内存.我敢打赌,通过重新思考代码的结构,可以解决你实际上要做的事情.