代码之家  ›  专栏  ›  技术社区  ›  paivas

如何从运行在Ubuntu上的Simulink Standalone可执行文件传递输入参数和记录输出

  •  0
  • paivas  · 技术社区  · 10 年前

    我正在尝试执行通过在Ubuntu终端中构建Simulink模型生成的独立可执行文件,如下所示:

    !./我的模型(_M)

    我想将输入参数传递给这个可执行文件,它目前以.mat文件的形式存在。有9个输入端口接受一系列值,模型有10个输出端口,我需要记录每个输入组合的输出以测试模型。

    我已经使用grt.tlc来构建和生成代码,这是用于通用实时目标。

    请告诉我,如何将输入传递给这个可执行文件,并在ubuntu终端上记录输出。目的是在外部的matlab环境中运行该模型。

    非常感谢。

    2 回复  |  直到 10 年前
        1
  •  1
  •   Phil Goddard    10 年前

    你真的想使用RSIM目标,而不是GRT目标。通过搜索文档并单击 快速模拟 链接,由以下MATLAB命令返回,

     >> docsearch('Scripts for Batch and Monte Carlo Simulations')
    
        2
  •  0
  •   Sobrique    10 年前

    我不能评论你正在使用的具体流程。双向“对话”子流程的一般答案是“使用IPC::Open3;”。

    例如。:

    #!/usr/bin/perl
    
    use strict;
    use warnings;
    
    use IPC::Open3;
    
    my $pid = open3 ( my $input, my $output, my $errors, "/path/and/command" );
    
    print {$input} "some command\n";
    my $result = <$output>; #nb - single line at a time. 
    
    close ( $input );
    close ( $output );
    close ( $errors );
    
    waitpid ( $pid, 0 );
    

    您将能够坐在循环中读/写(并捕获错误)。您还必须对输出的数据量稍微小心一点,因为这每行都有效-如果您输入了错误的数字,它会阻塞。(不过,有多种方法可以解决这一问题)。