Я думаю, что вы хотите выбрать один из вариантов переключения в зависимости от того, какой из Grashof
, NGRASH
или SpecGrashof
имеет значение true. Для этого вам нужно использовать оператор if
.
Вы используете switch
неверно, аргумент switch
является переменной, различные случаи являются возможными значениями этой переменной. Я предлагаю вам прочитать документацию .
Это то, что вы намеревались написать:
if Grashof
switch S
case a
disp("GCCC")
case b
disp("GCRR")
case c
disp("GRCR")
case d
disp("GRRC")
otherwise
return
end
elseif NGRASH
switch L
case a
disp("RRR1")
case b
disp("RRR1")
case c
disp("RRR3")
case d
disp("RRR4")
otherwise
return
end
else % SpecGrashof must be true here, no need to test for it
switch S
case a
disp("SCCC")
case b
disp("SCRR")
case c
disp("SRCR")
case d
disp("SRRC")
otherwise
return
end
end
Но, учитывая ваше определение этих трех случаев:
Grashof = L+S < sum(Lengths)-(S+L); %This will direct to 'Grashof' cases
NGRASH = L+S > sum(Lengths)-(S+L); %This will direct to 'Non-grashof' cases
SpecGrashof = L+S == sum(Lengths)-(S+L); %This will direct to 'Special Grashof' cases
Вы также можете включить знак следующего значения:
K = (L+S) - (sum(Lengths)-(S+L));
switch sign(K)
case -1 % Grashof cases
% ...
case 1 % NGRASH cases
% ...
case 0 % Special Grashof cases
% ...
end
, где в каждом случае вы помещаете оператор switch в S
или L
, как указано выше.