如何通过MATLAB在后台执行Python脚本?

2024-06-26 06:25:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我参与了我大学物理系的一个研究项目。在实验中,我们使用MokuLab(也称为Moku或Pymoku)来收集数据,并在收集数据时对所述数据进行流式处理。MokuLab可以使用Python操作。为了进行数据分析,我们使用MATLAB进行计算并在界面上显示数据。对于我的研究项目,我的工作是制作一个MATLAB代码和用户界面,它可以实现以下功能:

  1. 启动MokuLab开始收集数据并通过 调用Python脚本
  2. 将流调用移到后台 以避免锁定MATLAB,并允许用户执行任何 接口中的其他功能、操作或动作 流正在运行
  3. 如果用户需要,可以中途停止流
  4. 对数据进行数据分析,并在 小溪在流

总的来说,我对MATLAB调用python脚本的部分没有异议。我目前的问题是,在进行数据分析时,我不知道如何将流上调用的函数移到后台。因此,我想知道是否有人知道如何在MATLAB中调用函数,然后让它在后台运行的方法,或者给我一个例子。我用什么方法可以做到这一点

虽然我没有正式尝试过任何东西,但我一直在寻找可能有助于我实现这一目标的方法。我的指导老师推荐的一个选项是我使用并行处理。然而,似乎MATLAB需要很长时间来初始化parpool,而且我对这种编程风格也不太精通;我现在还在学习。我也想过用一个定时器函数调用这个函数,但我认为这不会给我太多的流控制权

为了直观地了解我想要什么,假设我有一个MATLAB函数,它启动流并在流中进行数据分析:

function initiateMokuStream(obj)
  py.SomeModule.InititateStream();
  print('Stream is running');
  while (StreamRuns == True)
    obj.file1 = open('ch1.txt');
    obj.file2 = open('ch2.txt');
    SecondDemodAnalysis(obj.file1,obj.file2,other args);
  end
  print('Stream is over, there is no more data to collect');
end

预期结果是,在调用函数之后,它打印'Stream is running'。之后,用户仍然可以执行其他操作,而不必等待流结束并打印'Stream is over, there is no more data to collect'


Tags: 数据项目方法函数用户功能脚本obj