函数中的矩阵,fzero无法正常工作

时间:2014-10-20 21:20:00

标签: arrays matlab matrix anonymous

这里有很多变数所以请耐心等待。在调试之后,除了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来说,我是一个非常初学者,所以请不要犹豫不决。 提前谢谢!

1 个答案:

答案 0 :(得分:0)

在不知道其他变量的大小,形状和类型的情况下,很难说,但基于该错误消息,fx应该是一个标量,它将作为向量出现,这意味着你将一些东西传递给它不喜欢的fzero

我现在没有MATLAB在我面前,但是看看你的fun_Partridge函数,你正在做一些变量的矩阵乘法,以及其他变量的元素乘法。如果o和/或E是向量,您可能最终会使用矩阵而不是向量函数,如果fzero使用类似函数构建fx sum会产生向量而不是标量,导致&&||的短路行为窒息。

除了@ NKN上面的评论之外,请尝试执行size(fun_Partridge(1)),看看你是否得到了一个向量或矩阵。