【问题标题】:how to run the same matlab function continuously in parallel如何并行连续运行相同的matlab函数
【发布时间】:2019-08-07 08:43:05
【问题描述】:

我是 Matlab 新手,目前正在编写一个 matlab 代码,该代码可以捕获图像并检测该图像上的浪费量。我已经有了捕获图像并在该图像上检测到浪费量的代码。 但是,此代码仅适用于一台相机。我想知道如何使此代码适用于多个摄像头,以便多个摄像头可以同时并行工作。

假设我安装了 3 个摄像头而不是一个。有什么办法可以让三个摄像头使用相同的代码并行运行。

【问题讨论】:

  • 亲爱的阿盖尔,非常感谢您的回复。我能够将我的代码放在计时器函数中并使其重复工作。但是,定时器功能只能在一台相机上反复运行。我希望能分享一种方法,让我可以为多个相机并行运行此计时器功能。
  • 您是否尝试过使用 3 个不同的计时器?这将是一个接一个的定时器功能的3行。使用事件侦听器 + 处理程序对象的想法正是让事情并行运行。让我知道 timer 函数是否已经完成。
  • 非常感谢您的回复。尽管不同的计时器不能并行工作,但您的回答启发了我串行运行不同的计时器。但是,如果您能分享一种我可以根据用户配置生成新计时器的方法,我将不胜感激。例如,每当用户单击按钮时,都会创建一个新的计时器并开始运行。
  • 如果需要定时器启动的触发条件,只需将start方法放在正确的位置即可。如果您需要比等待几秒钟更复杂的事件驱动响应,则需要创建自己的 Event and Listener 类。

标签: matlab timer parallel-processing matlab-guide


【解决方案1】:

timer 的不同实例默认并行执行队列任务。

例如,用

t1=timer;
t2=timer;
t3=timer; % Calling the constructor in separate occasions should create independent instances.

t1.StartDelay=2;
t2.StartDelay=3;
t3.StartDelay=5; % please print the fields to screen to see that t1, t2, t3 are not linked

[t1.TimerFcn, t2.TimerFcn, t3.TimerFcn]=deal(@(~,~)disp(num2str(toc)));

start(t1);start(t2);start(t3);tic

我的结果是

1.9977
3.005
5.0011

(如您所见,timer 不是很精确。您应该看到不同但相似的结果。)

从结果可以看出timer默认,即。每个timer 实例一次调用TimerFcn,并行排队任务。如果不是这样,你应该会在 cmd 中看到 2、5、10。

因此,您可以根据您的上下文调整上述示例中的TimerFcn。如果您在上下文中遇到特殊问题,请在您的问题中指定您在concrete, minimal, self-contained and reproducible example 中遇到的问题

对于定期调用,您可能需要调整 'BusyMode' 字段或使用您的自定义 handler class

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-03
    • 1970-01-01
    • 2020-09-23
    • 2023-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多