0

У меня есть следующее уравнение в MATLAB:
eqn1 = (1-t)*x1 + t*x2 == x; где x1,y1 = <some_constant_value>
Я решение уравнения как:
t1 = double(solve(subs(eqn1,x,min(x_arr(i,:))),t)); и делает сравнение как:MATLAB решения() возвращает массив для линейного уравнения

if(t1 >= 0 & t1 <= 1) 
    crossing = 1; 
    return 
end 

Однако время от времени я получаю следующую ошибку:
Операнды || и & Операторы & должны быть преобразованы в логические скалярные значения.
Из того, что я узнал на других форумах/ответах, это потому, что && и || не способны обрабатывать массивы и, следовательно, ошибку. Но, учитывая, что я решаю линейное уравнение, почему MATLAB возвращает массив?

EDIT
Мои извинения, я забыл дать инициализации для переменных:
syms x y t
x1 как double
x2 в double
y1 в double
y2 в double
x_arr в double
y_arr в double

+0

Как вы инициализации x1 и y1 и что же решить возвращение? Может быть, решение не возвращается? – Daniel

+1

, пожалуйста, отправьте фактический код, что-то, что мы можем проверить. – Amro

+0

Это все еще недостаточно информации для нас, чтобы воспроизвести проблему (см. [MCVE] (http://stackoverflow.com/help/mcve) .Если мне было догадаться, возможно, 'solve' нашел несколько решений? Возможно, вы можете изменить ваш тест 'if' для использования функций' all' и 'any' в зависимости от вашего приложения ... – Amro

ответ

0

Я получил это работает в Hacky образом путем разделения if условия как:

if(t1 >= 0) 
    if(t1 <= 1) 
     crossing = 1; 
     return 
    end 
end