【问题标题】:How do I call Matlab in a script on Windows?如何在 Windows 上的脚本中调用 Matlab?
【发布时间】:2011-02-01 04:59:09
【问题描述】:

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

  • 用于查询数据库的 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 有哪些选择?

【问题讨论】:

    标签: windows matlab scripting automation


    【解决方案1】:
    matlab -nosplash -nodesktop -r "command"
    

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

    Start MATLAB program (Windows platforms)

    还有一种方法可以用 C 库隐藏 matlab 窗口。见engSetVisible。

    【讨论】:

    • 嗯...也许我遗漏了什么。我将不得不再次在 Windows 上检查它。感谢您的帮助!
    猜你喜欢
    • 2012-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多