【发布时间】:2011-11-24 16:42:00
【问题描述】:
在 MATLAB 中有一个函数 clear 可以删除所有当前变量。如果您开始一些全新的东西并且不想与之前的计算发生冲突,这将非常有用。我现在正在为 Mathematica 搜索类似的东西,但除了 Clear[VAR] 之外我找不到任何东西,它只删除了变量 VAR。
【问题讨论】:
在 MATLAB 中有一个函数 clear 可以删除所有当前变量。如果您开始一些全新的东西并且不想与之前的计算发生冲突,这将非常有用。我现在正在为 Mathematica 搜索类似的东西,但除了 Clear[VAR] 之外我找不到任何东西,它只删除了变量 VAR。
【问题讨论】:
您可以使用ClearAll 清除Global 上下文(默认)中的变量及其属性,如下所示:
ClearAll["Global`*"]
如果您在不同的上下文中工作(例如,笔记本特定的上下文或单元组特定的上下文),您可以这样做
ClearAll[Evaluate[Context[] <> "*"]]
如果您想从内核中删除所有符号,以便 Mathematica 不再识别它们,您可以使用类似于上述两个示例的Remove[]。
除此之外,您始终可以使用Quit[] 退出内核,这将删除所有符号。下次您评估某项内容时,将启动一个新内核。
【讨论】:
我推荐以下两种方法之一:
有一个系统文件KeyEventTranslations.tr,您可以对其进行编辑以自定义键盘快捷键。我和其他人一样,已将 Ctrl+Q 添加到 Quit[] 内核中,以便快速清除所有会话变量。有关设置的更多信息,请参阅:
在 Mathematica 中,当前的 $Context 定义了 Context 非限定符号名称所属的内容。通过为新笔记本提供独特的上下文,这可以通过Evaluation 菜单轻松完成,该笔记本中使用的符号不会与其他笔记本中的不合格符号发生冲突。有关详细信息,请参阅以下问题:
【讨论】:
我刚刚意识到您可能不知道,与 MATLAB 不同,Mathematica 被设计为作为两个独立的进程运行:前端是用户界面,让您可以使用笔记本。内核进行计算。您可以在不影响前端的情况下退出内核,甚至可以为不同的笔记本启动多个内核,或者在远程计算机上启动一个内核并与本地前端一起使用。
我相信清理所有内容的唯一可靠方法是Quit 内核并重新启动它(这是自动的)。除了用户变量/函数(包括In/Out、加载的包、系统缓存等)之外,还有太多可以修改的东西。所以如果你需要一个真正的全新开始,我推荐Quit。
对于“软”重置,@yoda 已经提到了ClearAll["Global`*"]。有<< Utilities`CleanSlate` 包,它的自动化程度远不止于此。您可以阅读 AddOns\ExtraPackages\Utilities\CleanSlate.m 文件中的包文档。
简而言之,CleanSlate[] 将尝试在加载包时将您带回内核状态。 ClearInOut[] 将清除 In 和 Out 以节省内存。
我已经好几年没用过这个包了(ClearInOut[] 功能除外),因为 Mathematica 内核在现代计算机上启动很快,所以我只使用Quit。所以我无法告诉你它的效果如何。
【讨论】: