代码之家  ›  专栏  ›  技术社区  ›  Benjamin Oakes

如何在windows上的脚本中调用matlab?

  •  5
  • Benjamin Oakes  · 技术社区  · 15 年前

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

    • 查询数据库的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有一个 -automation 在Windows上标记以启动 "automation server" . 对我来说,这听起来有点过分了,我希望两个平台都能工作。

    在这个工作流程中,我有哪些选项可以使Matlab自动化?

    1 回复  |  直到 15 年前
        1
  •  4
  •   yuk    15 年前
    matlab -nosplash -nodesktop -r "command"
    

    也适用于窗户。是的,它打开了另一个窗口,但这不是问题。我在Tomcat服务器上从Java包装器中以批处理模式运行,并且没有问题。将所有命令放入脚本文件中,不要忘记使用exit命令关闭会话,并使用-r标志。你也可以找到 -无图形窗口 -等待 参数有用。它可以在windows和unix上运行。您可以使用特定于平台的标志,如果某些标志不受支持,它们将被忽略。

    Start MATLAB program (Windows platforms)

    还有一种用c库隐藏matlab窗口的方法。见 engSetVisible .