我有以下问题:如何告诉 Matlab 它不应该等待函数的结果?除了线程还有其他方法吗?
我的问题:我有一个函数 A,每隔几秒由计时器调用一次。如果满足特定事件,则在函数 A 内调用另一个函数 B。函数 B 打开一个批处理文件。我希望功能 A 继续运行而不等待功能 B 结束。有没有办法可以轻松做到呢?
如果这个问题已经被问过,我很抱歉,但我找不到满意的答案。还请原谅我糟糕的英语。
我要感谢所有提供帮助的人。
在函数 B 中,只需&在行末调用批处理文件即可。
例如:
!mybatch.bat &
Run Code Online (Sandbox Code Playgroud)
这将以后台模式运行该文件mybatch.bat,并在调用后立即将执行返回到 Matlab。
或者如果您更喜欢完整的表格:
[status, result] = system('mybatch.bat &')
Run Code Online (Sandbox Code Playgroud)
但在这种情况下它有点没用,因为mybatch后台的系统调用,result变量总是空的并且status总是(无论是否找到并执行0文件)mybatch.bat
编辑:这是一个快速技巧,以防只是批处理文件的执行减慢了程序的速度。
如果函数 B 中有更多的 matlab 指令,并且您确实需要函数 A 继续执行而无需等待,则必须使用函数 B 设置一个侦听器对象作为回调。然后在函数 A 中触发事件(这将激活侦听器并调用函数 B)。