How to make Matlab give different answers for different text inputs of different lengths

1 visualizzazione (ultimi 30 giorni)
A = input('Ask me anything: ','s');
if A==('Are you sentient?')
disp('Yes')
else
disp('Ask me anything but that')
end
This only works if I ask "Are you sentient?", or input a sentence of equal length. So if I input "abc def ghijklmno" It'll take it and give the else answer, but if I simply ask it "Yes?" it gives me the error, "Arrays have incompatible sizes for this operation" What am I doing wrong?

Risposta accettata

Stephen23
Stephen23 il 16 Ago 2023
Modificato: Stephen23 il 16 Ago 2023
"What am I doing wrong?"
You are using EQ (i.e. ==) for character arrays, which performs a character-by-character comparison (exactly like using EQ on numeric arrays). If you want to compare the entire text use STRCMP, STRCMPI, or similar:
if strcmpi(A,'Are you sentient?')
  2 Commenti
Stephen23
Stephen23 il 16 Ago 2023
Modificato: Stephen23 il 16 Ago 2023
Note how EQ works for character arrays:
'cat' == 'hat'
ans = 1×3 logical array
0 1 1
which is just like EQ for numeric arrays:
[1,2,3] == [0,2,3]
ans = 1×3 logical array
0 1 1
This operation only works if the array sizes are compatible:
(which yours are not, as you noted yourself)

Accedi per commentare.

Più risposte (2)

DGM
DGM il 16 Ago 2023
Modificato: DGM il 16 Ago 2023
I figured that for multiple cases, it would be neater to use a switch-case.
A = input('How do you eat your oatmeal?: ','s');
switch lower(A)
case 'hot'
disp('Wow! Me too! We have so much in common.')
case 'cold'
disp('That''s kind of gross.')
case {'with my mouth','with a spoon'} % you can use grouped cases
disp('Ha ha, mister funny man.')
otherwise
disp('I didn''t expect you to say that')
end

Chunru
Chunru il 16 Ago 2023
A = input('Ask me anything: ','s');
if strcmpi(A, 'Yes') % compare string (case insensitive)
disp('Yes')
else
disp('Ask me anything but that')
end

Categorie

Scopri di più su Programming in Help Center e File Exchange

Tag

Prodotti


Release

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by