Comparing input character and a String

5 Ansichten (letzte 30 Tage)
Yusuf Oguzhan Turgut
Yusuf Oguzhan Turgut am 10 Jun. 2019
Kommentiert: Jan am 11 Jun. 2019
Hello, I am trying to design a GUI. In my GUI, Matlab gives 5 random characters and user will enter the same. I want to compare user's input and 5 characters that MATLAB gives for create a ratio called correction. correction ratio = how many characters are true / 5. For ex = if 1 character of MATLAB and user input is same, correction ratio = 1/5. I try to make this code but it gives error. How can i do that ?
function check_Callback(hObject, eventdata, handles)
% hObject handle to check (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
b1= get(handles.input,'String') % user's input
a1 = get(handles.q1,'String'); % 1st character of MATLAB's string
a2 = get(handles.q2,'String'); % 2nd character of MATLAB's string
a3 = get(handles.q3,'String'); % 3rd character of MATLAB's string
a4 = get(handles.q4,'String'); % 4th character of MATLAB's string
a5 = get(handles.q5,'String'); % 5th character of MATLAB's string
correction = 0;
for i = 1:5 %% this is for obtaining correction ratio.
if a(i)== char(b1(i))
correction = (correction + i)/5;
end
end
  2 Kommentare
Bob Thompson
Bob Thompson am 10 Jun. 2019
Please post the entire error message.
Yusuf Oguzhan Turgut
Yusuf Oguzhan Turgut am 10 Jun. 2019
a =
5
b1 =
'$>-&\'
Undefined function or variable 'a'.
Error in guioguzhan>check_Callback (line 353)
if a(i)== char(b1(i))
Error in gui_mainfcn (line 95)
feval(varargin{:});
Error in guioguzhan (line 42)
gui_mainfcn(gui_State, varargin{:});
Error in
matlab.graphics.internal.figfile.FigFile/read>@(hObject,eventdata)guioguzhan('check_Callback',hObject,eventdata,guidata(hObject))
Error while evaluating UIControl Callback.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Jan
Jan am 10 Jun. 2019
Of course a(1) and a1 are two completely different things. It is not clear, what the contents of b1 is, but maybe you want:
b1 = get(handles.input,'String') % user's input
a{1} = get(handles.q1, 'String'); % 1st character of MATLAB's string
a{2} = get(handles.q2, 'String'); % 2nd character of MATLAB's string
a{3} = get(handles.q3, 'String'); % 3rd character of MATLAB's string
a{4} = get(handles.q4, 'String'); % 4th character of MATLAB's string
a{5} = get(handles.q5, 'String'); % 5th character of MATLAB's string
correction = 0;
for i = 1:5 %% this is for obtaining correction ratio.
if a{i} == b1{i}
correction = (correction + i) / 5;
end
end
  4 Kommentare
Yusuf Oguzhan Turgut
Yusuf Oguzhan Turgut am 10 Jun. 2019
Thank you very much :) It helped me a lot :)
Jan
Jan am 11 Jun. 2019
"b1 is like /()=!" is not clear enough. Prefer proper Matlab syntax instead:
b1 = '/()=!'
b1 = "/()=!"
b1 = {'/()=!'}
Maybe this is secure:
b1c = cellstring(b1);
b1_firstChar = b1c{1}(1);

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Migrate GUIDE Apps finden Sie in Help Center und File Exchange

Produkte


Version

R2018b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by