运行ginput同时在MATLAB中运行循环

时间:2014-04-29 20:44:08

标签: matlab ginput

我想在我在MATLAB中制作的一个游戏中显示一个十字准线。我尝试使用ginput因为它显示十字准线并读取所点击内容的x和y位置,因此它非常完美。但是,由于它总是等待点击并且我有移动的对象,它会导致在屏幕上创建对象然后不移动。如何在ginput运行并评估点击次数的同时运行循环并继续移动对象?

1 个答案:

答案 0 :(得分:0)

Update figure while waiting for event in Matlab?非常相似

总结一下:ginput不适合实时交互功能,实际上更适合注释工具。查看该图的ButtonDownFcn属性。该链接还包含一个小例子,说明如何实现这样的东西。为清晰起见,我会在此处复制,但原始赠送金额归pm89grantnz

% Stop button
uicontrol(...
    'Style','pushbutton', 'String', 'Stop',...
    'Units','Normalized', 'Position', [0.4 0.1 0.2 0.1],...
    'Callback', 'run = 0;');

% Axes
ax = axes(...
    'Units','Normalized',...
    'OuterPosition', [0 0.2 1 0.8]);

run = 1;
t = 0;
while run
    t = t + 0.01; x = t:0.01:t+2;
    h = plot(ax, x, sin(x));
    set(ax, 'ButtonDownFcn', 'get(ax, ''CurrentPoint'')');
    xlim([x(1) x(end)]); ylim([-1 1]);
    pause(0.01);
end