MATLAB-每个排版符号的识别
我在MATLAB中有以下代码,用户必须逐字输入单词MATLAB-每个排版符号的识别,matlab,Matlab,我在MATLAB中有以下代码,用户必须逐字输入单词“沉淀”。键入一个字母后,用户必须按Enter键,程序检查键入的字母是否正确 现在我想更改程序,这样用户在键入字母后不必按Enter键。MATLAB中是否有任何运算符或函数对每个按下的按钮作出反应,这样就不必按Enter键了 disp('Please enter "precipitations" without errors') target=('precipitations'); n=size(target); n=n(2); % Charac
“沉淀”
。键入一个字母后,用户必须按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
据我所知,没有内置的MATLAB函数来实现这一点。但是,有一个函数
getkey
打开
您可以下载此函数并更改代码以使用
YourInput(i) = getkey();
--
我当然想知道这是如何实现的,它做到了以下几点:他们在(1,1)
位置创建了一个窗口大小为0,0
的新图形。您将注意到屏幕左下角的新图形
然后,创建一个回调函数KeypressFcn
,每当按下一个键时执行该函数。按下的键保存在图形的UserData
字段中,并作为变量返回。函数的有趣部分(以及一个最简单的示例)是:
我对课文做了很多修改,使它(在我看来)更容易理解。如果您对这些更改不满意,请随时进行回滚。您可以通过单击问题下方的
编辑的x分钟
,转到上一次修订,然后按回滚
。
fh = figure(...
'keypressfcn','set(gcbf,''Userdata'',double(get(gcbf,''Currentcharacter''))) ; uiresume ', ...
'position',[0 0 1 1] ...
);
uiwait ;
key = get(fh,'Userdata') ;
delete(fh) ;