假设您是一名新程序员并且做了类似......
的事情%...la da da
%...programming away
if such && such
clear = 1;
else
clear = 0;
end
或以其他方式,为变量clear
分配值。
有没有办法“清除”clear
?
clearvars
不起作用。单击工作区变量并手动单击删除确实有效,但我认为这是作弊。
答案 0 :(得分:27)
这样做:
builtin('clear','clear')
注意:请注意避免此类操作以保持代码清晰。只有在您想要进行的确切操作时才进行覆盖。否则,如果您忘记(或者如果另一个人使用您的代码并且没有意识到)您可能会覆盖清除(或任何其他)功能,则可能会导致未来的错误。例如,您可以轻松地将此变量命名为doClear
。
答案 1 :(得分:8)
任何名称,即使builtin
和feval
都可以覆盖。在这种情况下,您可以使用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。