if statement - working with characters

I am executing the following code:
x = inputdlg({'Month', 'Population renewal', 'Death rate'}, 'Inputs')
f = getfield(x,{1});
if (f == 'January')
b = 0.5
else
b = 0.7
end
and I am getting an error that says "??? Undefined function or method 'eq' for input arguments of type 'cell'"
Please do tell me where I am going wrong....

 Akzeptierte Antwort

Azzi Abdelmalek
Azzi Abdelmalek am 23 Sep. 2013

7 Stimmen

Use
if isequal(f{1} ,'january')

7 Kommentare

Azzi Abdelmalek
Azzi Abdelmalek am 23 Sep. 2013
[ Ojaswita commented]
Thanks alot for the answer... can you pls explain the logic too so that I can always have it in mind for next time... :)
And also what if I want to say that if f is january, february or march?
f={'january'} % is a cell array
f{1} % is char
'jenuery'==f{1} % the result is the comparison of each character,
isequal('january',f{1}) will compare the two words, the result is 0 or 1
%for you last question
ismember(f,{'janury','march'})
Ojaswita
Ojaswita am 24 Sep. 2013
Thank you very very much! I understand it well and it works! :) :)
Jan
Jan am 24 Sep. 2013
Bearbeitet: Jan am 24 Sep. 2013
For the comparison of strings, I'd prefer strcmp. This would even accept a cell string as input:
if strcmp(f, 'January')
Or
if strcmp(f{1}, 'January')
Ojaswita
Ojaswita am 24 Sep. 2013
It works equally well with strcmp... I tried strcmp before too but i didnt know how to insert my 'or' requirement. As in if f = january/february/march etc etc...
any(strcmp(f,{'janury','march'}))
Gwangil Mun
Gwangil Mun am 26 Nov. 2022
good

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Variables finden Sie in Hilfe-Center und File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by