在 Matlab 中列出/查看/清除持久变量

Posted

技术标签:

【中文标题】在 Matlab 中列出/查看/清除持久变量【英文标题】:List/view/clear persistent variables in Matlab 【发布时间】:2013-11-05 22:34:45 【问题描述】:

如何在 MATLAB 中列出/查看/清除持久变量?我希望看到持久变量不是针对特定函数,而是针对当前在内存中具有持久变量的所有函数。

我尝试过whos('persistent')whos('global') 之类的方法,但没有成功。

【问题讨论】:

我不确定您要做什么。持久变量只能在函数内声明,因此您需要在其中调用whos。变量存在后,您会看到 whos'Attributes' 列下显示它是 'persistent' 感谢您的回复 horchler。我正在寻找一种方法来列出所有在内存中具有持久变量的函数,并列出它们的持久变量。我意识到您可以按照下面的说明使用 clear 来清除持久变量,但这需要您事先知道哪些函数具有持久变量。 我不确定有没有办法。您可以联系 The MathWorks 并提出服务请求。一个可能有用的函数是inmem,但它只会告诉您哪些函数、mex 文件和类已被编译并加载到内存中。我想您可以将其用作起点并解析返回的函数名称以查找 persistent(可能使用 mlintmex('-lex','filename.m')),但这是一个非常棘手的问题。 【参考方案1】:

如果你想从定义它的函数外部清除persistent,那么你需要clear函数本身:

clear functionNameWithPersistentVariable

或从内存中清除所有 (unlocked) 函数:

clear functions

如果有问题的函数实际上是class 的方法,您可能需要改用clear classes。另请参阅clear 文档中的this table。

在函数本身中,您可以使用whos 和this Matlab Central answer 中的建议。不幸的是,我不知道有任何优雅的记录方式来查找或列出当前在内存中的函数或持久变量。

【讨论】:

以上是关于在 Matlab 中列出/查看/清除持久变量的主要内容,如果未能解决你的问题,请参考以下文章

MATLAB - 持久变量

MATLAB基础

MATLAB之基本语法与基础函数

matlab7.0命令大全

如何清除子函数中的持久变量

在 MATLAB 中,是不是可以重新定义 `clear` 以清除命令窗口,而不是清除存储的变量?