whats wrong with this if block?

3 vues (au cours des 30 derniers jours)
Muazma Ali
Muazma Ali le 8 Sep 2019
Modifié(e) : dpb le 8 Sep 2019
% WHATS WRONG WITH THIS IF BLOCK, AM NOT GETTING UNKNOWN AS A RESULT WHERE
% IT HAS TO GIVE ME THIS RESULT. WHEN i JUST RUN THIS CODE, IT GIVE ME THIS ERROR MESAGE:
% Index exceeds matrix dimensions.
different_salts_available=input(['Enter the number associated with the chloride that is available with ZnBr2 and HCOONa, enter 0 if another chloride salt than the ones listed are available,'...
'\n1: NH4Cl,'...
'\n2: MgCl2,'...
'\n3: CaCl2,'...
'\n4: NaCl,'...
'\n5: KCl. ']);
if (different_salts_available==1||2||3||4||5)
det_beste_saltet='ZnBr2';
disp('Choose to add zinc bromide,')
disp(det_beste_saltet)
else
det_beste_saltet='unknown';
disp('Invalid number entered. The programme cannot decide the best salt based on the input entered. The best salt is:')
disp( det_beste_saltet)
end

Réponse acceptée

dpb
dpb le 8 Sep 2019
Modifié(e) : dpb le 8 Sep 2019
(different_salts_available==1||2||3||4||5)
is bad syntax for if in MATLAB. It results in testing the result of the logical expression
(different_salts_available==1) || 2 || 3 || 4 || 5
which is always TRUE so nothing matters about what the variable value actually is.
MATLB requires the form as
if different_salts_available==1 || different_salts_available==2 || different_salts_available==3 ...
which is very verbose; you could write
if ismember(different_salts_available,1:5)
as one possible way or
if different_salts_available>=1 & different_salts_available<=5
or several other alternatives.
The latter is common enough expression I have a utility routine iswithin I use quite a bit to hide some higher level complexity
function flg=iswithin(x,lo,hi)
% returns T for values within range of input
% SYNTAX:
% [log] = iswithin(x,lo,hi)
% returns T for x between lo and hi values, inclusive
flg= (x>=lo) & (x<=hi);
end
With it, the latter above becomes
if iswithin(different_salts_available,1,5)
...

Plus de réponses (0)

Catégories

En savoir plus sur Verification, Validation, and Test dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by