我想显示一个情节,然后等待 光标点击图,或用户通过按下一个数字输入Matlab键。到目前为止,我已经知道如何单独使用这些,但我不知道如何让Matlab独立响应。我想你会称这是一种多线程形式。
单击光标时启用响应的代码如下:
h = figure( %{ ... params ...%} );
while true
figure(h);
cursor = ginput(1);
% ... process the cursor input ...
end
现在,我想要包含以下行以使用户能够从键盘输入数字:
num = input('Enter the number: ' );
但是如果我只是将它添加到我的while循环中:
h = figure( %{ ... params ...%} );
while true
figure(h);
cursor = ginput(1);
% ... process the cursor input ...
num = input('Enter the number: ' );
% ... process the keyboard input ...
end
然后程序将始终等待用户从键盘输入一个数字,然后返回查找光标输入。但是我希望程序能够彼此独立地做出响应。
解决方案是什么?
答案 0 :(得分:0)
我不认为您可以通过ginput和输入获得所需的结果 另一种方法是在图中添加回调函数:
function mouse_and_keyboard_input()
%set up a figure with keypress and mouseclick event
figure('KeyPressFcn',@keyPress, 'WindowButtonDownFcn', @mouseClicked)
plot(sin(0:0.1:2*pi));
h_text = text(10, -0.8, 'No key pressed');
h_mouse = text(10, -0.6, 'No mouse click');
% Nested function: variables are shared.
function keyPress(objectHandle, eventData)
key = get(objectHandle,'CurrentCharacter');
set(h_text, 'string', ['Last pressed key: ' key])
end
function mouseClicked(objectHandle , eventData )
disp('mouse clicked')
pos = get(objectHandle,'CurrentPoint');
set(h_mouse, 'string', ['Mouse click pos: ' num2str(pos)])
end
end
如果单击图中,将调用 mouseClicked 功能,并显示图中的鼠标位置。 在这里,您可以添加更多代码来处理光标输入