2013-05-26 5 views
0

я хочу отладить следующий простейший код в MATLAB и выяснить, почему он выполняет всегда, если заявлениеиспользование отладчика в MATLAB

function testfile(x) 
if 3<x<6 
disp('in the middle of range'); 
else 
    disp('out of range'); 

end 
end 

я использовал следующий код для отладчика

echo testfile on 
testfile(-2) 
in the middle of range 


testfile(6) 
in the middle of range 

почему он не выполняет else? Я использовал следующий код в качестве теста

5<4<8 

ans = 

    1 

так это означает, что запись, если sta tement в этом стиле не так? a я понял, что он такой же, как если бы 5 < 4 || 4 < 8? Тогда мне понятно, почему он выполняется только в том случае, если заявление и никогда не достигает другого

+1

Это может быть неправильно, поэтому я не хотел бы поставить в качестве ответа, но делает '3 Dirk

+0

Я хочу ознакомиться с операцией debug и прояснить все для меня –

+0

Если вы хотите отлаживать код в Matlab, установите остановку в строке оператора 'if', а после того, как вы ввели режим отладки, начните оценивать утверждения и части инструкций в командной строке, а также проверку значений переменных. – Jonas

ответ

3

5<4<8 оценивается как (5<4)<8. Если сначала разрешить выражение в круглых скобках, мы имеем 0<8, что верно. Тест с 5<4==0, который оценивается как true.

То, что вы хотите сделать, это проверить, является ли x одновременно больше 3 и меньше 6, то есть

3<x && x<6

Смежные вопросы