如何在Matlab中将鼠标事件检查为后台进程?

时间:2017-04-27 11:38:34

标签: matlab events parallel-processing mouse

我正在使用Matlab开发一个执行多个数学运算的应用程序,单击鼠标时可以更改其参数,如下例所示。

while time<endtime
 calculate_manythings;
if ~mod(time,checkmouse)
  mouseinput_timeout(timemouse, gca);
  change_calculation_parameters;
end
  time=time+1;
end

目前,我正在定期暂停操作以检查鼠标事件,但这很慢且不实用。如何持续监控这些并同时运行代码?我可以使用parfeval使鼠标事件检查后台进程吗?例如?

非常感谢, 玛尔塔

1 个答案:

答案 0 :(得分:0)

您可以使用callback functions。我在这里使用了'ButtonDownFcn'

timeinterval = 1; % seconds between mouse clicks
% generate axes with callback function
h = plot(rand(1,2),'LineWidth',6);
set(gca,'ButtonDownFcn',@callback);
% reset Tag and time
h.Tag = '';
tic;
while true
    drawnow;
    if strcmp(h.Tag,'Pressed') % if pressed
        t = toc; % check time passed
        if t >= timeinterval
            % change parameters
            disp('Pressed');
            h.Color = rand(1,3);
            % reset timer
            tic;
        end
        % reset Tag
        h.Tag = '';
    end
end

并且回调函数是:

function callback(src,~)
src.Children(1).Tag = 'Pressed';
end