我在MATLAB中有以下代码,用户必须逐字输入单词"precipitations"
。输入一个字母后,用户必须按 Enter ,程序会检查输入的字母是否正确。
现在我想更改程序,以便用户在键入字母后不必须按 Enter 。 MATLAB中是否有任何操作符或函数对每个按下按钮作出反应,因此不必按 Enter ?
disp('Please enter "precipitations" without errors')
target=('precipitations');
n=size(target); n=n(2); % Characters number
for i=1:n;
YourInput(i)=input('','s');
if YourInput(i)==target(i)
disp('OK. Please, input the next symbol')
i=i+1;
else
disp('Error. Please try again.')
break
end
end
答案 0 :(得分:2)
据我所知,有 no 内置MATLAB函数来执行此操作。但是MATLAB File Exchange上有一个函数getkey
。
您可以下载此功能并更改您的代码以使用
YourInput(i) = getkey();
-
我当然想知道如何实现这一目标,并且它会执行以下操作:他们在位置0,0
创建一个窗口大小为(1,1)
的新图形。您会注意到屏幕左下方的新图形。
然后,创建在按下键时执行的回调函数KeypressFcn
。按下的键保存在图中的UserData
字段中,并作为变量返回。函数的有趣部分(和最小的例子)是:
fh = figure(...
'keypressfcn','set(gcbf,''Userdata'',double(get(gcbf,''Currentcharacter''))) ; uiresume ', ...
'position',[0 0 1 1] ...
);
uiwait ;
key = get(fh,'Userdata') ;
delete(fh) ;