Matrix dimensions must agree while using if
6 views (last 30 days)
Show older comments
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.
0 Comments
Accepted Answer
KSSV
on 15 Sep 2017
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
0 Comments
More Answers (2)
Jan
on 15 Sep 2017
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 Comment
Martin Grden
on 28 Oct 2020
Edited: Martin Grden
on 28 Oct 2020
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
on 15 Sep 2017
Edited: Arun Kumar Misra
on 15 Sep 2017
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
0 Comments
See Also
Categories
Find more on Data Type Conversion in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!