Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
每当m文件执行停止时,在MATLAB中运行默认脚本_Matlab - Fatal编程技术网

每当m文件执行停止时,在MATLAB中运行默认脚本

每当m文件执行停止时,在MATLAB中运行默认脚本,matlab,Matlab,当m文件停止执行时,是否可以让matlab运行默认脚本?我不是指退出matlab时运行的finish.m,我希望即使我按ctrl+C中断运行脚本的执行,也能运行脚本。这可能吗?您可以使用onCleanup。当你提到Ctrl+C操作时,我突然想到了这一点 以下是文件: Loren在这里有一些例子: 如果一个脚本调用另一个脚本,是否希望在每个脚本完成时运行此scriptfinish脚本?还是仅最终完成?还有,您希望在这个scriptfinish中包含什么?我不想从我自己的脚本文件中专门调用任何其他

当m文件停止执行时,是否可以让matlab运行默认脚本?我不是指退出matlab时运行的finish.m,我希望即使我按ctrl+C中断运行脚本的执行,也能运行脚本。这可能吗?

您可以使用
onCleanup
。当你提到Ctrl+C操作时,我突然想到了这一点

以下是文件:

Loren在这里有一些例子:

如果一个脚本调用另一个脚本,是否希望在每个脚本完成时运行此
scriptfinish
脚本?还是仅最终完成?还有,您希望在这个
scriptfinish
中包含什么?我不想从我自己的脚本文件中专门调用任何其他脚本。我想知道,当我以任何方式停止执行正在运行的脚本时,是否可以从Matlab运行另一个脚本,可能是通过结束调试会话或在脚本运行时按ctrl+c;类似于C中类对象被销毁时自动调用析构函数。我想在这个脚本中包含一些释放内存的东西,例如fclose('all')命令。@user13267:那么为什么不编写类或函数而不是脚本呢?感觉这个你想要的“清理”脚本将用于执行清理任务,而当你使用正确的构造时,这些任务是不必要的…@user13267:CTRL+C用于终止所有正在运行的脚本/函数等。它很像一个紧急逃生门;如果打开门的动作会点燃燃烧着的建筑物中唯一未燃烧的楼梯,这将违背门的整体概念…但这仍然要求您在任何和所有函数中明确调用
onCleanup
…此外,我相信它只有在其使用的函数超出范围时才会激活,这在脚本中或按CTRL+C时都不会发生。此外,在Loren的博客上搜索“CTRL+C”时会出现以下情况:“据我所知,MATLAB在编程级别上没有任何处理Ctrl-C的工具。我不知道你为什么不想使用函数,但出于这个原因,可能还有其他一些原因,我更喜欢使用这个解决方案。”-LorenWell,这很奇怪,但是这里的文档和Steve Lord的评论()建议
onCleanup
使用Ctrl+C。我现在没有时间尝试。另外,编写函数通常比编写脚本更好。也许@user13267会决定这样做?我刚刚测试过。它似乎可以使用Ctrl+C并退出调试器,但只在函数中,而不是在脚本中。尽管如此,这并不是OP想要的,因为他/她不想在每个函数/脚本中都包含一行
onCleanup(@()fclose(fid));