如何在Windows上的脚本中调用Matlab?

Ben*_*kes 5 windows scripting matlab automation

我正在开发一个使用多种语言的项目:

  • 用于查询数据库的SQL
  • Perl/Ruby用于快速和脏地处理来自数据库和其他一些簿记的数据
  • 用于矩阵导向计算的Matlab
  • 各种统计语言(SAS/R/SPSS)用于处理Matlab输出

每种语言都适合它的利基,我们已经在每个语言中都有相当数量的代码.现在,有很多手动工作来运行所有这些脚本更好的步骤.我已经在Linux上完成了这项工作,而且效果相对较好.

在Linux上:

matlab -nosplash -nodesktop -r "command"
Run Code Online (Sandbox Code Playgroud)

要么

echo "command" | matlab -nosplash -nodesktop
Run Code Online (Sandbox Code Playgroud)

...以"命令行"模式打开Matlab.(也就是说,没有创建窗口 - 它只是从STDIN读取,执行并输出到STDOUT/STDERR.)我的问题是在Windows(XP和7)上,这个相同的代码打开一个窗口而不读取从/写入命令行.它只是茫然地盯着我,完全忽略了STDIN和STDOUT.

如何在Windows上编写运行Matlab命令的脚本?我基本上想要做的事情:

ruby database_query.rb
perl legacy_code.pl
ruby other_stuff.rb
matlab processing_step_1.m
matlab processing_step_2.m
# etc, etc.
Run Code Online (Sandbox Code Playgroud)

我发现Matlab -automation在Windows上有一个标志来启动"自动化服务器".这对我的目的来说听起来有些过分,我想要在两个平台上都能运行的东西.

在此工作流程中,我有哪些选项可以自动执行Matlab?

yuk*_*yuk 4

matlab -nosplash -nodesktop -r "command"
Run Code Online (Sandbox Code Playgroud)

也适用于 Windows。是的,它会打开另一个窗口,但这不是问题。我从 Tomcat 服务器上的 Java 包装器以批处理模式运行它,没有出现任何问题。将所有命令放入脚本文件中,不要忘记使用 exit 命令关闭会话,并使用 -r 标志。您还可以发现-noFigureWindows-wait参数很有用。它可以在 Windows 和 Unix 上运行。您可以使用特定于平台的标志,如果某些标志不受支持,它们将被忽略。

启动 MATLAB 程序(Windows 平台)

还有一种用 C 库隐藏 matlab 窗口的方法。请参阅engSetVisible