有没有办法在Mathematica开始之前清除所有内容?

时间:2011-11-24 16:42:01

标签: wolfram-mathematica

在MATLAB中,有 clear 功能可以删除所有当前变量。如果您开始全新的事情并且不希望与早期计算发生冲突,这非常有用。我现在正在为Mathematica搜索类似的东西,但除了 Clear [VAR] 之外我找不到任何东西,它只删除变量 VAR

3 个答案:

答案 0 :(得分:15)

您可以使用ClearAll清除Global上下文中的变量及其属性(默认),如下所示:

ClearAll["Global`*"]

如果您在不同的上下文(例如,特定于笔记本的上下文或特定于单元格的上下文)中工作,则可以执行

ClearAll[Evaluate[Context[] <> "*"]]

如果你想删除来自内核的所有符号,以便Mathematica不再识别它们,你可以使用类似于上面两个例子的Remove[]

除非这些,您始终可以使用Quit[]退出内核,这将删除所有符号。下次评估时会启动一个新内核。

答案 1 :(得分:14)

我推荐两种方法之一:

1。键盘快捷方式退出[]内核

您可以编辑系统文件KeyEventTranslations.tr以自定义键盘快捷键。我和其他人一样,已经将 Ctrl + Q 添加到内核Quit[],允许快速清除所有会话变量。有关设置此内容的详细信息,请参阅:

2。为新Notebook提供唯一的上下文

在Mathematica中,当前$Context定义了Context个非限定符号名称所属的内容。通过为新笔记本提供一个独特的上下文(可通过Evaluation菜单轻松完成),该笔记本中使用的符号不会与其他笔记本中的非限定符号发生冲突。有关更多详细信息,请参阅以下问题:

答案 2 :(得分:12)

我刚才意识到你可能不知道,与MATLAB不同,Mathematica设计为两个独立的进程:前端是用户界面,让你可以使用笔记本。内核进行计算。您可以在不影响前端的情况下退出内核,甚至可以为不同的笔记本启动多个内核,或者在远程计算机上启动内核并将其与本地前端一起使用。


我相信清除所有内容的唯一可靠方法是Quit内核并重新启动它(这是自动的)。除了用户变量/函数(包括In / Out,加载的包,系统缓存等)之外,还有太多东西可以被修改。因此,如果您需要一个真正重要的开始,我建议Quit

对于“软”重置,@ yoda已经提到ClearAll["Global`*"]。有<< Utilities`CleanSlate`包,它比这更自动化了一些。您可以阅读AddOns\ExtraPackages\Utilities\CleanSlate.m文件中的包文档。

简而言之,CleanSlate[]将在加载包时尝试将您带回内核状态。 ClearInOut[]会清除InOut以节省内存。

由于Mathematica内核在现代计算机上快速启动,因此我多年没有使用过这个包(ClearInOut[]功能除外),所以我只使用Quit。所以我不能告诉你它的运作情况。