我有一个用MATLAB写的项目。它有像Main.m这样的主文件,我想在后台的每一个1秒上重复运行Main.m。我不想看到任何显示和打开从MATLAB窗口。我该怎么做?
发布于 2020-01-12 09:43:41
要做到这一点,有两个步骤。首先,编写一些m脚本,它每1s调用一次主函数。如果您的主函数需要一些时间来计算,您可以通过toc获取时间是非常重要的。另一种选择是timers,它避免任何时间漂移(循环通常略高于1s,计时器平均为1s )。
一旦你的MATLAB知道该做什么,问题是谁启动它。有一个-batch选项:
非交互地执行MATLAB脚本、语句或函数.MATLAB:
screen
工具箱的启动更改,将
F 220
如果脚本成功执行,则使用退出代码0自动退出。否则,MATLAB将终止一个非零的退出代码.
语句是用双引号括起来的MATLAB代码。如果语句是MATLAB函数或脚本的名称,则不要指定文件扩展名。任何必需的文件必须在MATLAB搜索路径上或在启动文件夹中。
在非交互式脚本或命令行工作流中使用-batch选项。不要在-r选项中使用此选项。
若要测试MATLAB的会话是否以批处理模式运行,请调用batchStartupOptionUsed函数。
示例:-batch "myscript“
这意味着MATLAB不会打开任何窗口,而是在调用命令行中看到任何输出。它在LINUX上的外观:
x@y ~ $ matlab -batch "1+1"
ans =
2发布于 2020-01-12 09:14:25
假设Main.m中有一个顶级函数,您希望每1秒执行一次,一种可能性是启动Matlab的一个实例,并创建另一个脚本,在一个永久循环中调用函数,暂停1秒(确保另一个脚本在PATH中有Main.m文件,这样它就可以看到它)
函数run_main_forever(),而真正的my_function()暂停(1)结束
您可以让一个.bat文件在后台启动matlab并运行如下脚本:
matlab -nodesktop -nosplash -r "cd('C:\Path\To\'); run_main_forever();"有关在没有桌面的情况下启动MATLAB的更多详细信息,请参见此链接:https://blogs.mathworks.com/community/2010/02/22/launching-matlab-without-the-desktop/
https://stackoverflow.com/questions/59702312
复制相似问题