我正在尝试提示用户从图中(情节)中进行选择。当我使用下面的代码运行它时,直到我单击该图后才会显示提示,然后显示提示并且代码继续。事实上,在我选择图形之前,在显示 ginput 调用之前不会调用 printf(或 disp)。
printf("Select part\n"); % (disp also doesnt work properly)
[xinput,yinput] = ginput(1);
提示的目的是提醒用户移动到图形,所以自然需要在选择图形之前显示。
我可以在两者之间添加一个额外的冗余输入调用,强制 printf 在控制台中显示。例如输入(“按 Enter”)。但这是一个不方便的解决方案。
奇怪的是,如果您只运行上面的代码,它确实可以正常工作。但是在程序的其余部分运行时,它会显示问题。所以调试起来可能很困难。此外,使用调试器在完整代码中一次运行一行可以正常工作,在选择图形之前显示提示。
只是为了增加混乱。在循环运行这部分程序时,第一个实例无法正确显示提示,但其他所有实例都可以正常工作。
谢谢
编辑:以下代码可靠地失败(对我来说),就像我的完整程序失败一样;(再次编辑以简化)
figure(1);
input_test = input("press 1: ");
switch input_test
case 1
while true
clc;
printf("Left click to get coords or right click to finish\n");
[xinput,yinput,mouse_button] = ginput(1)
if mouse_button == 3
break
endif
endwhile
endswitch
看来它与这条线有关;
input_test = input("press 1: ");
如果我将其替换为
input_test = 1;
它工作正常。我不知道这是什么原因,我无法从该位置删除输入请求。