这里有很多变数所以请耐心等待。在调试之后,除了Tinf之外,所有变量都工作正常,因此假设所有其他变量都是常量。 Tinf定义为
Tinf=34.5*cos((2*pi).*(t-5))+275.5
是t的函数,其中t是
t=linspace(0,50,600)
我正在尝试计算
T(1)=fzero(fun_Partridge,0)
,其中
fun_Partridge=@(x) ((I(1).^2).*Rprime(1))+(Alpha.*D(1).*Gs)-(o*E*pi.*D(1).*(x.^4-Tinf.^4))-(h*pi.*D(1).*(x-Tinf))
(请记住,所有其他变量都在工作,因此基本上是常量,矩阵变量也只是每列一个值的两列)
一切正常,直到
T(1)=fzero(fun_Partridge,0)
我收到错误消息:
"操作数到||和&&运算符必须可转换为逻辑标量值。
fzero中的错误(第308行) elseif~isfinite(fx)|| 〜伊斯雷尔(FX)
MaxSag_Take_2中的错误(第102行) T(1)= fzero(fun_Partridge,0); "
对于MatLab来说,我是一个非常初学者,所以请不要犹豫不决。 提前谢谢!
答案 0 :(得分:0)
在不知道其他变量的大小,形状和类型的情况下,很难说,但基于该错误消息,fx
应该是一个标量,它将作为向量出现,这意味着你将一些东西传递给它不喜欢的fzero
。
我现在没有MATLAB在我面前,但是看看你的fun_Partridge
函数,你正在做一些变量的矩阵乘法,以及其他变量的元素乘法。如果o
和/或E
是向量,您可能最终会使用矩阵而不是向量函数,如果fzero
使用类似函数构建fx
sum
会产生向量而不是标量,导致&&
和||
的短路行为窒息。
除了@ NKN上面的评论之外,请尝试执行size(fun_Partridge(1))
,看看你是否得到了一个向量或矩阵。