为什么我这个matlab程序运行后一直显示busy?
clccleari=1;R0=3000;Vm=450;Vt=300;T=5/1000;Xm=zeros(1,100);Ym=zeros(1,100);XT=zeros(1...
clc
clear
i=1;
R0=3000;
Vm=450;
Vt=300;
T=5/1000;
Xm=zeros(1,100);
Ym=zeros(1,100);
XT=zeros(1,100);
YT=zeros(1,100);
R=zeros(1,100);
Xm(1)=0;
Ym(1)=0;
XT(1)=R0*cos(pi/6);
YT(1)=R0*sin(pi/6);
R(1)=sqrt((Xm(1)-XT(1))^2+(Ym(1)-YT(1))^2);
while(R(i)>0.1)
i=i+1;
XT(i)=XT(i-1)+Vt*T*cos(pi);
YT(i)=YT(i-1)+Vt*T*sin(pi);
K=YT(i)/XT(i);
a=1+K*K;
b=-2*(Xm(i-1)+K*Ym(i-1));
c=Xm(i-1)*Xm(i-1)+Ym(i-1)*Ym(i-1)-(Vm*T)^2;
Xm(i)=(-b+sqrt(b*b-4*a*c))\(2*a);
Ym(i)=K*Xm(i);
R(i)=sqrt((Xm(i)-XT(i))^2+(Ym(i)-YT(i))^2);
end
plot(Xm,Ym,XT,YT) 展开
clear
i=1;
R0=3000;
Vm=450;
Vt=300;
T=5/1000;
Xm=zeros(1,100);
Ym=zeros(1,100);
XT=zeros(1,100);
YT=zeros(1,100);
R=zeros(1,100);
Xm(1)=0;
Ym(1)=0;
XT(1)=R0*cos(pi/6);
YT(1)=R0*sin(pi/6);
R(1)=sqrt((Xm(1)-XT(1))^2+(Ym(1)-YT(1))^2);
while(R(i)>0.1)
i=i+1;
XT(i)=XT(i-1)+Vt*T*cos(pi);
YT(i)=YT(i-1)+Vt*T*sin(pi);
K=YT(i)/XT(i);
a=1+K*K;
b=-2*(Xm(i-1)+K*Ym(i-1));
c=Xm(i-1)*Xm(i-1)+Ym(i-1)*Ym(i-1)-(Vm*T)^2;
Xm(i)=(-b+sqrt(b*b-4*a*c))\(2*a);
Ym(i)=K*Xm(i);
R(i)=sqrt((Xm(i)-XT(i))^2+(Ym(i)-YT(i))^2);
end
plot(Xm,Ym,XT,YT) 展开
1个回答
展开全部
原因是,在迭代过程中R(i)始终没能满足R(i)<=0.1的循环结束条件,所以循环就一直继续下去。
请检查R的更新条件,是否存在可能达到你要求的结束条件?
大致看了一下,好像是按照导引律计算接近某个目标的吧?
需要注意的是,接近目标的过程往往很难达到一个很小的范围,主要有两方面的原因:(1)导引律本身;(2)仿真算法及步长的选择。
根据你的程序,R最小达到34.78左右,然后就继续增大了。
追问
对,就是导引的问题,那我可以把步长调小一点吗?
追答
步长调小应该有一定效果,但也未必能满足你的要求。
实际上,对于空中目标一般用近炸引信,地面或海面目标的话尺寸往往比较大,所以,没必要把判断的门限值设那么小。
另外,实践中还经常用一种判断条件——如果R开始增大,一般就可以结束了。
微测检测5.10
2023-05-10 广告
2023-05-10 广告
您好!建议咨 深圳市微测检测有限公司,已建立起十余个专业实验室,企业通过微测检测就可以获得一站式的测试与认 证解决方案;(EMC、RF、MFi、BQB、QI、USB、安全、锂电池、快充、汽车电子EMC、汽车手机互 联、语音通话质量),认证遇...
点击进入详情页
本回答由微测检测5.10提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询