如何在MATLAB中删除变量“clear”

时间:2013-08-21 14:46:22

标签: matlab clear

假设您是一名新程序员并且做了类似......

的事情
%...la da da
%...programming away
if such && such
    clear = 1;
else 
    clear = 0;
end 

或以其他方式,为变量clear分配值。

有没有办法“清除”clear

clearvars不起作用。单击工作区变量并手动单击删除确实有效,但我认为这是作弊。

4 个答案:

答案 0 :(得分:27)

这样做:

builtin('clear','clear')

注意:请注意避免此类操作以保持代码清晰。只有在您想要进行的确切操作时才进行覆盖。否则,如果您忘记(或者如果另一个人使用您的代码并且没有意识到)您可能会覆盖清除(或任何其他)功能,则可能会导致未来的错误。例如,您可以轻松地将此变量命名为doClear

答案 1 :(得分:8)

任何名称,即使builtinfeval都可以覆盖。在这种情况下,您可以使用function handles来强制MALTAB将语句解释为函数调用:

clear = str2func('clear');
clear('clear')

显然,str2func也可以被覆盖! :)但是,存在一个类似的解决方案(灵感来自Loren's article),它创建了一个单独的m文件来执行相同的操作:

function clearclear()
    assignin('caller', 'clear', @clear);

在主工作区中调用此功能应该允许您安全地执行clear('clear')

第二个解决方案利用了m文件没有“看到”主工作区中的变量clear这一事实,因此可以正确访问clear函数的实际句柄

答案 2 :(得分:1)

非直观的方式是

clear = rand(1000,500,700);
pack

这会产生以下警告:

  

警告:变量'clear'无法保存到其版本的MAT文件中   超过7.3。要保存此变量,请使用-v7.3开关。   跳过...

它也会遇到同样的问题,您可以将pack指定为变量。

答案 3 :(得分:0)

有趣的问题!我发现以令人惊讶的方式很难找到以编程方式执行此操作的方法(除了@TryHard建议的方法)

这是我提出的,虽然它比clear更强大:

!matlab &
exit

请注意,如果您想立即在命令行中键入此内容,则需要在两者之间使用shift + Enter。