功能手柄未进行转换 - MATLAB

问题描述:

我得到这些错误:功能手柄未进行转换 - MATLAB

Conversion to function_handle from double is not possible.

已经搜索一下,并试图改变我的代码,但没有sucess。你能帮忙吗?由于

A=[99.23;100.05;91;107.71;104.1]; 
B=[3441 3441 301720.5;68750 1068750 0;170040 13085020 0;229350 229350 5729350;34194000 0 0]; 
N=[300000;1000000;13000000;5500000;32800000]; 
E=[-0.00302;-0.00261;-0.00208]; 

[c3,r3]=size(A); 
[c4,r4]=size(B); 

x=sym ('x',[1 c3]); 
x=transpose(x); 

for i=1:c3 
    Valor(i,1)=0; 
    for j=1:r4 
     Valor(i,1)[email protected](x){(Valor(i,1)/((1+E(j,1)+x(j,1))^j))+(B(i,j)/((1+E(j,1)+x(j,1))^j))}; 
    end 
end 

我要的是找出X因为我已经有一个载体Valorantigo,我将使用应用解决载体。

Valorantigo(1:c3,1)=A(1:c3,1).* N(1:c3,1) ./100; 
eqn=Valor(1:c3,1)==Valorantigo(1:c3,1); 
[solx, param, cond] = solve(eqn, x, 'ReturnConditions', true); 

基本上X将是

  • Valorantigo(1,1)= 3441 /(1-0.00302 + X1)+ 3441 /(1-0.00261 + X1)^ 2 + 301720.5的溶液/(1-0.00208+x1)^3
  • Valorantigo(2,1)= 68750 /(1-0.00302 + X2)+ 1068750 /(1-0.00261 + X2)^ 2 + 0 /(1-0.00208 + X2 )^ 3
  • Valorantigo(3,1)= 170040 /(1-0.00302 + X3)+ 13085020 /(1-0.00261 + X3)^ 2 + 0 /(1-0.00208 + X3)^ 3
  • 的其他线路相同...
+0

你有什么triying一起acomplish'= @(X){....}'?只是填满阵列'Valor'?然后就删除,并留下内侧 –

+0

@AnderBiguri是的,我想填满基勇气。我把“{...}”放在了一边,因为我认为这是解决我的错误的方法之一。即使我抹去我有一些错误。 –

+0

@AnderBiguri已经详细说明了。你能帮忙吗?我这个工作,因为周五和无法找到一个办法来解决我的代码 –

就相关部分:

Valor(1,1)=symfun(0,x); 
for i=1:c3 
    Valor(i,1)=symfun(0,x); 
    for j=1:r4 
     Valor(i,1)=symfun(Valor(i,1)/(1+E(j,1)+x(j,1))^j+(B(i,j)/((1+E(j,1)+x(j,1))^j)),x); 
    end 
end 

勇气有待predefinded为象征性的,与Valor(i,1)=0;你去到一个双。


哦差点忘了,你的解决需要看起来像这样:

[solx1,solx2,solx3,solx4, solx5, param, cond] = solve(eqn, x, 'ReturnConditions', true); 
+0

但方式MATLAB未计算矢量_Valor_。心不是那可能有这样的结果:'勇猛= 3441 /(1-0.00302 + X1)+ 3441 /(1-0.00261 + X2)^ 2 + 301720.5 /(1-0.00208 + X3)^ 3'?谢谢 –

+0

已经deitaled我想要的。你能帮忙吗? –

+0

@ArleteFerreira做SOE的变化,现在对我的作品,你额外的代码。唉,我不知道解决COMAND应该如何在这里工作...... –