是否有任何方法可以在MATLAB中使函数无阻塞?
例如程序
for t = 0 : 1 : 1000
if mod(t, 100) == 0
foo();
end
end
它每100个周期调用foo()
,foo()
花费大约50个周期。
我想在后台任务中调用foo()
并在完成后调用某个回调函数。有什么方法可以在MATLAB中实现它吗?
答案 0 :(得分:1)
在matlab中做多线程你应该使用“批处理”命令(我认为你必须有并行计算工具箱),
这是一个例子:
我喜欢在matlab中运行一个需要很长时间的脚本
示例脚本:
for i=1:1e8
A(i)=sin(i*2*pi/1e8);
end
我将此脚本保存为“da”!
然后以批处理模式运行它我在matlab中编写了这段代码:
job=batch("da")
作业以批处理模式运行,您可以同时使用matlab 在完成你可以写的工作后检索结果:
load(job,'A')
,生成的数组A将位于您的工作区
你可以从Home>打开“monitor job gui”环境>并行>监视工作 最后你可以用以下简单的代码删除作业:
delete(job)
要加载批处理函数,您只需使用以下语句:
j=batch(fcn, N, {x1,x2,...,xn})
其中fcn是你的函数名,N是输出数组的数量,x1,... xn是函数输入数组。