【发布时间】:2016-03-26 06:18:50
【问题描述】:
我在 MATLAB 中有以下等式:eqn1 = (1-t)*x1 + t*x2 == x; where x1,y1 = <some_constant_value>
我将方程求解为:t1 = double(solve(subs(eqn1,x,min(x_arr(i,:))),t)); 并进行比较:
if(t1 >= 0 & t1 <= 1)
crossing = 1;
return
end
但是,我有时会收到以下错误:
|| 的操作数和 && 运算符必须可转换为逻辑标量值。
根据我在其他论坛/答案中发现的信息,这是因为 && 和 || 无法处理数组,因此会出现错误。但是,考虑到我正在求解一个线性方程,为什么 MATLAB 会返回一个数组?
编辑
抱歉,我忘了给变量初始化:syms x y tx1 as doublex2 as doubley1 as doubley2 as doublex_arr as doubley_arr as double
【问题讨论】:
-
如何初始化 x1 和 y1 以及求解返回什么?也许没有返回解决方案?
-
请贴出实际代码,我们可以测试一下。
-
这仍然不足以让我们重现问题(请参阅MCVE。如果我不得不猜测,也许
solve找到了多个解决方案?也许您可以将您的if测试修改为根据您的应用程序使用all和any函数... -
@Amro 这是一个自给自足的函数,独立于其余代码运行。实际代码太大,无法在这里重现,所以我认为这已经足够了。感谢您为解决这个问题付出的时间和精力。
-
好吧,您始终可以通过在该行放置一个断点来调试它,并且肯定知道 :) 我们没有完整的代码,所以只有您可以做到。 MATLAB 也有一个选项来中断错误
dbstop if error,它可以方便地调试错误。
标签: matlab logical-operators symbolic-math equation-solving