Matrix dimensions must agree while using if

6 次查看(过去 30 天)
celestialBody = input('Celestial body = ','s');
if celestialBody == 'moon'
mass1 = MASS_OF_MOON;
distance = RADIUS_OF_MOON;
elseif celestialBody == 'mercury'
mass1 = MASS_OF_MERCURY;
distance = RADIUS_OF_MERCURY;
else
mass1 = 0;
distance = 1;
end
Above is my script and whenever I run this script, type the celestialBody as mercury, it says
Matrix dimensions must agree.
Error in exoweight (line 16)
if celestialBody == 'moon'
how can I solve this error? the values for the constants are set.

采纳的回答

KSSV
KSSV 2017-9-15
doc Strcmpi or strcmp
celestialBody = input('Celestial body = ','s');
if strcmpi('moon',celestialBody)
mass1 = MASS_OF_MOON;
distance = RADIUS_OF_MOON;
elseif strcmpi('mercury',celestialBody)
mass1 = MASS_OF_MERCURY;
distance = RADIUS_OF_MERCURY;
else
mass1 = 0;
distance = 1;
end

更多回答(2 个)

Jan
Jan 2017-9-15
The problem is in
if celestialBody == 'moon'
The == operator works elementwise. Therefore the strings on the left and the right need to have the same number of elements (or one must be a scalar character). As suggested already, use strcmp or strcmpi to compare strings.
  1 个评论
Martin Grden
Martin Grden 2020-10-28
编辑:Martin Grden 2020-10-28
Maybe MATHWORKS should offer a substitute to doing string comparisons, when checking a 2-value property (for ex. timer.Running). For now, you can do:
if (timer.running(end)=='n')
...

请先登录,再进行评论。


Arun Kumar Misra
Arun Kumar Misra 2017-9-15
编辑:Arun Kumar Misra 2017-9-15
try this it works
celestialBody = input('Celestial body = ','s');
if strcmp(celestialBody,'moon')
mass1 = MASS_OF_MOON;
distance = RADIUS_OF_MOON;
elseif strcmp(celestialBody,'mercury')
mass1 = MASS_OF_MERCURY;
distance = RADIUS_OF_MERCURY;
else
mass1 = 0;
distance = 1;
end

类别

Help CenterFile Exchange 中查找有关 Data Type Conversion 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by