matlab while 跳出,请帮忙看下这个程序为什么跳不出WHILE循环??
vib01; %電機參數 與omegam0無關
vib02; %振動機參數與omegam0有關其值改變時要重新調用
Tcapture=m0*r0^2*omegam0^2*abs(Wc); %俘獲力矩
S0=Se1;
Te01=Pe1*S0/(1+Tst1*S0^2);
Te02=Pe2*S0/(1+Tst2*S0^2);
Tdifference=abs(Te01-Te02-(f1-f2)*omegam0-m0*r0^2*omegam0^2*(Ws1-Ws2));%剩余力矩
if Tcapture-Tdifference<0
disp('Can not realize the frequency capture')
return
end
a1=[Te01-Te02-(f1-f2)*omegas*(1-S0)/pairs-Pm*(1-S0)^2*(Ws1-eta*Ws2)/(2*pairs^2)]/(Pm*(1-S0)^2*Wc/(2*pairs^2));
alpha1=asin(a1)-thetac; %2*alpha
F=Te01+Te02-(f1+f2)*omegas*(1-S0)/pairs-Pm*(1-S0)^2*(Ws1+eta*Ws2+2*Ws*sin(alpha1+thetas))/(2*pairs^2);%F(alpha,omegam0)
if F<0
disp('The power of the two motors is not enough to drive the vibrating system.')
return
end
delta=0.01;
a=0;
b=Se1;
m=(a+b)/2;
omegam0=(1-m)*omegas/pairs; %omegam0重新賦值
vib02; %重新計算振動機參數
Tcapture=m0*r0^2*omegam0^2*abs(Wc);
Te01=Pe1*S0/(1+Tst1*S0^2);
Te02=Pe2*S0/(1+Tst2*S0^2);
Tdifference=abs(Te01-Te02-(f1-f2)*omegam0-m0*r0^2*omegam0^2*(Ws1-Ws2));
a1=[Te01-Te02-(f1-f2)*omegas*(1-S0)/pairs-Pm*(1-S0)^2*(Ws1-eta*Ws2)/(2*pairs^2)]/(Pm*(1-S0)^2*Wc/(2*pairs^2));
alpha1=asin(a1)-thetac; %2*alpha
F=Te01+Te02-(f1+f2)*omegas*(1-S0)/pairs-Pm*(1-S0)^2*(Ws1+eta*Ws2+2*Ws*sin(alpha1+thetas))/(2*pairs^2);
if abs(F)
disp(' “Succeed: the values of 2alpha and omegm0 ”')
return
end
while (F<0)
a=m;
m=(a+b)/2;
omegam0=(1-m)*omegas/pairs; %omegam0重新賦值
vib02; %重新計算振動機參數
Tcapture=m0*r0^2*omegam0^2*abs(Wc);
Te01=Pe1*S0/(1+Tst1*S0^2);
Te02=Pe2*S0/(1+Tst2*S0^2);
Tdifference=abs(Te01-Te02-(f1-f2)*omegam0-m0*r0^2*omegam0^2*(Ws1-Ws2));
a1=[Te01-Te02-(f1-f2)*omegas*(1-S0)/pairs-Pm*(1-S0)^2*(Ws1-eta*Ws2)/(2*pairs^2)]/(Pm*(1-S0)^2*Wc/(2*pairs^2));
alpha1=asin(a1)-thetac; %2*alpha
F=Te01+Te02-(f1+f2)*omegas*(1-S0)/pairs-Pm*(1-S0)^2*(Ws1+eta*Ws2+2*Ws*sin(alpha1+thetas))/(2*pairs^2);%F(alpha,omegam0)
if abs(F)
disp(' “Succeed: the values of 2alpha and omegm0 ”')
break;
end
end
while(F>0)
b=m;
m=(a+b)/2;
omegam0=(1-m)*omegas/pairs; %omegam0重新賦值
vib02; %重新計算振動機參數
Tcapture=m0*r0^2*omegam0^2*abs(Wc);
Te01=Pe1*S0/(1+Tst1*S0^2);
Te02=Pe2*S0/(1+Tst2*S0^2);
Tdifference=abs(Te01-Te02-(f1-f2)*omegam0-m0*r0^2*omegam0^2*(Ws1-Ws2));
a1=[Te01-Te02-(f1-f2)*omegas*(1-S0)/pairs-Pm*(1-S0)^2*(Ws1-eta*Ws2)/(2*pairs^2)]/(Pm*(1-S0)^2*Wc/(2*pairs^2));
alpha1=asin(a1)-thetac; %2*alpha
F=Te01+Te02-(f1+f2)*omegas*(1-S0)/pairs-Pm*(1-S0)^2*(Ws1+eta*Ws2+2*Ws*sin(alpha1+thetas))/(2*pairs^2);%F(alpha,omegam0)
if abs(F)
disp(' “Succeed: the values of 2alpha and omegm0 ”')
break;
end
end
總結
以上是生活随笔為你收集整理的matlab while 跳出,请帮忙看下这个程序为什么跳不出WHILE循环??的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 《最强祖师》战斗玩法攻略
- 下一篇: 永劫无间查战绩攻略