【发布时间】:2014-08-06 19:23:06
【问题描述】:
我有一个相当庞大的程序,我一直作为脚本从 MATLAB 命令行运行。我决定使用一些嵌套函数对其进行一些清理(我需要将所有内容保存在一个文件中),但为了使其工作,我还需要使程序本身成为一个函数。因此,该程序不再像它作为脚本时那样在基础工作区中运行。这意味着我不再可以访问在程序运行后保留的数十个有用变量,这些变量对于额外的计算和有关运行的信息很重要。
我能找到的建议解决方法是使用assignin、evalin,将变量定义为全局变量,或者在现在函数化程序的定义中设置输出。然而,这些解决方案都不吸引我,我真的很想找到一种方法来强制工作空间本身为基础。是否存在任何此类解决方法?或者有没有其他方法不需要我手动定义或标记我想退出函数的每个特定变量?
【问题讨论】:
-
一种解决方法是在函数结束时运行
save('workspace');。然后在它运行之后你可以从命令行运行load('workspace');来查看所有变量 -
据我所知,这绝对是最简单的方法。谢谢特罗格多!
-
如果您还希望在发生错误后分配变量,请尝试在函数的开头添加
void = onCleanup(@variables2workspace);,其中variables2workspace可以是任何这些答案中的函数。它在void被销毁时执行,即在函数结束或任何错误时执行。
标签: matlab function scope global workspace