У меня есть следующее уравнение в 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
Как вы инициализации x1 и y1 и что же решить возвращение? Может быть, решение не возвращается? – Daniel
, пожалуйста, отправьте фактический код, что-то, что мы можем проверить. – Amro
Это все еще недостаточно информации для нас, чтобы воспроизвести проблему (см. [MCVE] (http://stackoverflow.com/help/mcve) .Если мне было догадаться, возможно, 'solve' нашел несколько решений? Возможно, вы можете изменить ваш тест 'if' для использования функций' all' и 'any' в зависимости от вашего приложения ... – Amro