我正在从事一个使用多种语言的项目:
- 查询数据库的SQL
- Perl/Ruby 用于快速处理数据库中的数据和一些其他簿记
- 面向矩阵计算的 Matlab
- 用于处理 Matlab 输出的各种统计语言 (SAS/R/SPSS)
每种语言都能很好地适应其利基市场,而且我们在每种语言中都有相当数量的代码。现在,有很多手动工作来运行所有这些可以更好地编写脚本的步骤。我已经在 Linux 上完成了此操作,并且效果相对较好。
在 Linux 上:
matlab -nosplash -nodesktop -r "command"
或
echo "command" | matlab -nosplash -nodesktop
...以“命令行”模式打开 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.
我发现 Matlab 在 Windows 上有一个 -automation
标志来启动 "automation server" .就我的目的而言,这听起来有点矫枉过正,我想要在两个平台上都能工作的东西。
在此工作流程中,我有哪些自动化 Matlab 的选项?
最佳答案
matlab -nosplash -nodesktop -r "command"
也适用于 Windows。是的,它会打开另一个窗口,但这不是问题。我从 Tomcat 服务器上的 Java 包装器以批处理模式运行它,没有任何问题。将所有命令放入脚本文件中,不要忘记使用 exit 命令关闭 session ,并使用 -r 标志。您还可以找到有用的 -noFigureWindows 和 -wait 参数。它适用于 Windows 和 Unix。您可以使用特定于平台的标志,如果某些不受支持,它们将被忽略。
Start MATLAB program (Windows platforms)
还有一种用C库隐藏matlab窗口的方法。参见 engSetVisible .
关于windows - 如何在 Windows 的脚本中调用 Matlab?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2523910/