作业帮 > 综合 > 作业

matlab中输入变量‘mu0’未定义.fy,f1定义所在行有错.

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/19 17:19:57
matlab中输入变量‘mu0’未定义.fy,f1定义所在行有错.
mu0=pi*4e-7; %真空磁导率
J=0.38;
a=1;
b=10e-3;
c=8e-3; %定磁体(下)的尺寸
a1=1;
b1=10e-3;
c1=8e-3; %转磁体(上)尺寸
h=30e-3; %转磁体到中心的距离
H=50e-3; %动磁体到中心的距离
p=0; %磁体间的夹角设为p
delg0=pi*2;
ddelg0=delg0/1000; %步长
for ii=1:1000;
x01=0;
y01=H*sin(p)+b*(1-cos(p))/2;
z01= H*cos(p)-b*sin(p)/2-h; %局部坐标原点O1在坐标系XOY中的坐标值
[fy(ii),fz(ii)]=force(p,x01,y01,z01,a,b,c,a1,b1,c1,J) %调用函数文件
H=H+c/2;
t1=-fz(ii)*H*sin(p)+fy(ii)*(H*cos(p)-h);
p=p+pi;
t2=fz(ii)*H*sin(p)+fy(ii)*(h-H*cos(p));
p=p-pi; %恢复p值
T=2*(t1+t2); %一对磁体的扭矩
p0(ii)=p;
p=p+ddelg0; %下一角度
end
plot(p0,fy,'-',p0,fz,'--',p0,T,'-.')
grid on,xlabel('角度'),ylabel('force or torque'),title('force of magnets of permanet magnet motors')
function [fy,fz]=force(p,x01,y01,z01,a,b,c,a1,b1,c1,J)
fy=force1(x01,x01+a1,y01,z01,p,0,0,b1,c1,J)+...
-force1(x01-a,x01-a+a1,y01,z01,p,0,0,b1,c1,J)+...
+force1(x01-a,x01-a+a1,y01,z01,p,b,0,b1,c1,J)+...
-force1(x01,x01+a1,y01,z01,p,b,0,b1,c1,J)+...
+force1(x01-a,x01-a+a1,y01,z01,p,0,c,b1,c1,J)+...
-force1(x01,x01+a1,y01,z01,p,0,c,b1,c1,J)+...
+force1(x01,x01+a1,y01,z01,p,b,c,b1,c1,J)+...
-force1(x01-a,x01-a+a1,y01,z01,p,b,c,b1,c1,J);
fz=-forcezp(p,0,y01,z01,a,b,a1,b1,J)+forcezp(p,0,y01-c1*sin(p),z01+c1*cos(p),a,b,a1,b1,J)-forcezp(p,0,y01-c1*sin(p),z01-c+c1*cos(p),a,b,a1,b1,J)+forcezp(p,0,y01,z01-c,a,b,a1,b1,J);
function f1=force1(v,w,y01,z01,p,b,c,b1,c1,J)
f1=(force2(v,w,y01,z01,p,b,c,b1,c1)-force2(v,w,y01,z01,p,b,c,b1,c1))*J^2/(4*pi*mu0);
function f2=force2(v,w,y01,z01,p,b,c,b1,z1)
f2=force3(w,y01,z01,p,b,c,b1,z1)-force3(v,y01,z01,p,b,c,b1,z1)-force3(w,y01,z01,p,b,c,0,z1)+force3(v,y01,z01,p,b,c,0,z1);
function f3=force3(u,y01,z01,p,b,c,y1,z1)
f6=y01*cos(p)+z01*sin(p)-b*cos(p)-c*cos(p)+y1;
f5=-y01*sin(p)+z01*cos(p)+b*sin(p)-c*cos(p)+z1;
f4=sqrt(u^2+(f5)^2+(f6)^2);
f3=u*(f6)*log(-u+f4)-u*(f6)-u^2*log(f4+f6)+u*f5*atan((-(f5)^2-u^2+u*f4)/(f5*f6))+...
+0.5*u*pi*abs(f5)*sign(f6)+0.5*f6*f4+0.5*(u^2+(f5)^2)*log(f4+f6);
function fzp=forcezp(p,x01,y01,z01,a,b,a1,b1,J)
if rem(p,pi)==0
fzp=-J^2*force1z(x01,y01,z01,a,b,a1,b1)/(pi*4*mu0);
else
fk=-forceyp(-p,-x01,-y01*cos(p)-z01*sin(p),y01*sin(p)-z01*cos(p),a,b,a1,b,J);
fzp=fk/(sin(p))-forceyp(p,x01,y01,z01,a,b,a1,b1,J)/(tan(p));
end
后面还有一些子函数写不下了.
没有定义 说明该字符没有付值 你只要给一个数值就可以了
再问: 我在第一行就对它进行赋值了啊
再答: function里面没有定义 用global 定义全局变量吧