无法在App Designer MATLAB下同时运行两个函数
目标 目标是使用应用程序设计器设计的应用程序同时运行两个功能。 一般来说,有3个主要区块 1) 附件一。应用程序包含1个状态按钮(例如停止按钮)和1个按钮(任务) 2) 功能优先任务。在引擎盖下,datetime在每次迭代中都进行采样 3) 功能第二任务。类似地,在引擎盖下,datetime在每次迭代中都进行采样 **为了重现性,我们简化了采样数据时间的示例 程序如下: 函数FirstTask在App1开始/启动时执行 然而,功能SecondTask仅在按下按钮TASK后执行 按下停止按钮后,功能FirstTask和功能SecondTask同时终止 观察结果 有三个观察结果 1) 函数FirstTask在App1开始/启动时按预期执行 2) 按下按钮任务后,按预期执行功能SecondTask 3) 功能FirstTask在按钮任务被按下后停止,尽管它独立于按钮任务 我的问题是,如何处理第三条观察。因为,我们需要同时运行Function FirstTask和Function SecondTask 重现上述问题的代码如下 1) 代码位于app1无法在App Designer MATLAB下同时运行两个函数,matlab,parallel-processing,matlab-figure,parallels,Matlab,Parallel Processing,Matlab Figure,Parallels,目标 目标是使用应用程序设计器设计的应用程序同时运行两个功能。 一般来说,有3个主要区块 1) 附件一。应用程序包含1个状态按钮(例如停止按钮)和1个按钮(任务) 2) 功能优先任务。在引擎盖下,datetime在每次迭代中都进行采样 3) 功能第二任务。类似地,在引擎盖下,datetime在每次迭代中都进行采样 **为了重现性,我们简化了采样数据时间的示例 程序如下: 函数FirstTask在App1开始/启动时执行 然而,功能SecondTask仅在按下按钮TASK后执行 按下停止按钮后,功
methods (Access = private)
% Code that executes after component creation
function startupFcn(app)
FirstTask(app)
end
% Button pushed function: RunSecondTaskButton
function RunSecondTaskButtonPushed(app, event)
SecondTask(app)
end
end
2) 功能优先任务
function FirstTask(Gui)
initVar=1;
MaximumData=1000; % Maximum before we append further
FirstData=NaT(MaximumData,1); % Prelocate
while Gui.StopButton.Value==0 % Loop while button stop no click
FirstData(initVar)=datetime('now','Format','HH:mm:ss.SSS'); % add the time vector duration for each day
initVar=initVar+1;
pause(1)
end
end
3) 功能第二任务
function SecondTask(Gui)
initVar=1;
MaximumData=1000; % Maximum before we append further
SecondData=NaT(MaximumData,1); % Prelocate
while Gui.StopButton.Value==0 % Loop while button stop no click
SecondData(initVar)=datetime('now','Format','HH:mm:ss.SSS'); % add the time vector duration for each day
initVar=initVar+1;
pause(1)
end
end
完整代码附加在此线程中。
非常感谢您对此事的建议。感谢您的建议。
使用定时器,以下内容可以通过以下方式实现
app.GraphTimer=timer;
app.GraphTimer.TimerFcn = @app.FirstTaskx;
app.GraphTimer.ExecutionMode = 'fixedRate';
在函数中,在应用程序设计器中
function FirstTaskx(app,~,~)
FirstTask(app)
end
对第二项任务重复相同的步骤。感谢您的建议。
使用定时器,以下内容可以通过以下方式实现
app.GraphTimer=timer;
app.GraphTimer.TimerFcn = @app.FirstTaskx;
app.GraphTimer.ExecutionMode = 'fixedRate';
在函数中,在应用程序设计器中
function FirstTaskx(app,~,~)
FirstTask(app)
end
对第二个任务重复相同的步骤。MATLAB基本上是单线程的。不能简单地同时运行两个函数。您必须使用计时器来运行短函数。例如,FirstTask将每秒运行一次,只在循环中执行一次,而不使用
pause
语句。旁注:调用python库时,MATLAB允许进程外执行。正如Chris所说,您必须使用计时器来触发每个任务的执行。使用pause(n)
将停止所有Matlab代码的执行,直到暂停时间结束。感谢您的快速回复,一旦我尝试建议Matlab基本上是单线程的,就会更新。不能简单地同时运行两个函数。您必须使用计时器来运行短函数。例如,FirstTask将每秒运行一次,只在循环中执行一次,而不使用pause
语句。旁注:调用python库时,MATLAB允许进程外执行。正如Chris所说,您必须使用计时器来触发每个任务的执行。使用pause(n)
将停止所有Matlab代码的执行,直到暂停时间结束。感谢您的快速回复,我尝试此建议后将进行更新