我有一个相当庞大的程序,之前是在MATLAB命令行中作为脚本运行。我决定用一些嵌套函数来对程序进行清理(需要将所有内容放在一个文件中),但为了让它工作,我还需要将程序本身变成一个函数。结果,这个程序不再像脚本那样在基本工作区中运行。这意味着我不再可以访问在程序运行后留下的数十个有用变量,这些变量对于额外的计算和关于运行的信息很重要。
可以找到的建议性解决方案是使用`assignin`,`evalin`,将变量定义为全局变量,或在现在函数化的程序定义中设置输出。然而,我并不喜欢这些解决方案,并且我真的想找到一种强制工作区本身转换为基本工作区的方法。是否存在这样的解决方案?或者是否有其他方法可以做到这一点,而不需要手动定义或标记我想要从函数中取出的每个特定变量?
可以找到的建议性解决方案是使用`assignin`,`evalin`,将变量定义为全局变量,或在现在函数化的程序定义中设置输出。然而,我并不喜欢这些解决方案,并且我真的想找到一种强制工作区本身转换为基本工作区的方法。是否存在这样的解决方案?或者是否有其他方法可以做到这一点,而不需要手动定义或标记我想要从函数中取出的每个特定变量?
save('workspace');
。然后在它运行完毕后,你可以从命令行运行load('workspace');
来查看所有的变量。 - Trogdorvoid = onCleanup(@variables2workspace);
,其中variables2workspace
可以是这些答案中的任何一个函数。它会在void
被销毁时执行,即在函数结束或出现任何错误时执行。 - Scz