MATLAB-每个排版符号的识别

MATLAB-每个排版符号的识别,matlab,Matlab,我在MATLAB中有以下代码,用户必须逐字输入单词“沉淀”。键入一个字母后,用户必须按Enter键,程序检查键入的字母是否正确 现在我想更改程序,这样用户在键入字母后不必按Enter键。MATLAB中是否有任何运算符或函数对每个按下的按钮作出反应,这样就不必按Enter键了 disp('Please enter "precipitations" without errors') target=('precipitations'); n=size(target); n=n(2); % Charac

我在MATLAB中有以下代码,用户必须逐字输入单词
“沉淀”
。键入一个字母后,用户必须按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) ;