我在Matlab中做一个冶金问题,要做到这一点,我需要制作以下代码,但当我调用以下嵌套函数时返回错误,顺便说一句,我这样做是因为我想将其导出为Excel加载项。
valor=molienda(10,6,6,6.1,1.02,0.45,0.7,10)
function a=molienda(F_min,Diametro,Largo,Wi,F80,Vp,fVc,t)
p80=mP80(t);
%Potencia para moler el mineral
W_mineral=Wi*((10/(p80^0.5))-(10/(F80))^(0.5));
P_mineral=W_mineral*F_min*1.341;
%Potencia para mover el medio moledor
Kwb = 4.879*(D^0.3)*(3.2-3*Vp)*fVc*(1-0.1/((2^9)-10*fVc))
W_bolas=80*(Diametro^2)*Largo;
P_bolas=Kwb*W_bolas;
P_total=P_bolas+P_mineral;
a(1)=P_total;
a(2)=P80;
function P_80=mP80(tiempo)
syms Q(x) z
Q(x) = (16.4831*x^(-0.7510)+1.665)*exp(-0.9451*tiempo^0.296);
fun= 80-(100-Q(z))==0;
P_80 = double(solve(fun,z));
end
end
我找不到解决办法,如果你知道怎么做,我会很高兴。先谢谢你的帮助。
尝试改变变量,但不起作用。
1条答案
按热度按时间63lcw9qa1#
根据文档,在限制下,
syms z
不能在函数中使用,而是z=sym('z')
因此
mP80
函数体可以重写为(也修复了卷积语法):除此之外,
Kwb = 4.879*(D^0.3)*(3.2-3*Vp)*fVc*(1-0.1/((2^9)-10*fVc))
行上的D
变量没有定义,会抛出错误。我猜你想使用变量Diametro
代替。还有一个错字行
a(2)=P80;
,它应该是小写p,所以a(2)=p80;
在所有的修正后,这段代码运行顺利,由你来评估结果是否令人满意: