【问题标题】:Having MATLAB to run multiple independent functions which contains infinite while loop让 MATLAB 运行多个包含无限 while 循环的独立函数
【发布时间】:2014-04-11 17:58:58
【问题描述】:

我目前正在使用三个 matlab 函数,以使它们在单个 Matlab 会话中同时运行(我知道 matlab 是单线程的),这三个函数分配给单独的任务,我可能很难解释所有此处详细介绍每个函数,但尽量包含尽可能多的信息。

它们是 CONTROL/CAMERA/DATA_DISPLAY 任务,我使用的方法是创建 Timer 对象以使所有函数在不同的回调周期时间内连续回调。

  1. CONTROL 会通过 wifi 与 udp 端口​​发送和接收数据,它会检查包的可用性,并不断执行回调
  2. CAMERA 通过 tcp 连续接收摄像头帧并显示,一个定时器对象 T1 用于此函数刷新捕获帧
  3. DATA_DISPLAY显示所有接收到的数据,这个会不断刷新,所以这个函数需要另外一个定时器T2来刷新显示

但是我注意到定时器 T2 在执行时阻塞了定时器 T1,并减慢了整个过程。我正在开发一个使用多核 CPU 的系统,我希望 MATLAB 能够利用计算核心并行执行两个计时器对象。

通过在matlab中搜索并行计算工具箱,似乎无法处理无限循环或连续回调,因为代码执行时不会完成并且不显示任何内容,可能我不太清楚如何使用这个工具箱

或者任何人都可以提供将代码重组为更有效结构的任何好主意。

非常感谢

【问题讨论】:

    标签: multithreading matlab multitasking


    【解决方案1】:

    我在这里看到使用并行计算工具箱的问题。该设计意味着作业是通过您的主要 matlab 实例控制的。除此之外,主实例是唯一具有 gui 的实例,这需要让您的 DISPLAY_DATA-Task 控制一切。我不知道这是否可能,但它会导致一个非常奇怪的架构。除此之外,在处理大量数据时,进程间通信并不是最好的办法。

    为了解决这个问题,我会使用 Java 来显示您的数据并实现 'DISPLAY_DATA'-Part。与 java 的连接非常快速且易于使用。您将不得不编写一个小的 java gui,它有一个 appendframe-function,允许您的 CAMERA-Job 推送新数据。显然更新 gui 应该在没有阻塞的情况下并行完成。

    【讨论】:

    • 非常感谢您的回复,因为我以前从未遇到过使用JAVA与Matlab进行交互,您是这个意思吗? Java Interface,而CONTROL在matlab上运行的同时,也将数据信息传递给了JAVA,但是CAMERA图像呢,会不会也运行在matlab上,把图像也传给JAVA显示呢?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多