matlab小白一个,求大神指点

clear
i=input('Please choose a planet:1(水星)2(金星)3(火星)4(木星)5(土星):');
r=7.78*1e11;
if i<1|i>5 return,end
planet={'水星','金星','火星','木星','土星'};
MS=1.99e30;
G=6.67e-11;
k=G*MS/4/pi^2;
T=sqrt(r^3/k);
w=2*pi/T;
rE=1.496e11;
TE=sqrt(rE^3/k);
wE=2*pi/TE;
r=r/rE;
R=1+r;
th=linspace(0,2*pi);
fg=figure;
plot(0,0,'g.','markersize',15)
plot(cos(th),sin(th),'r--')
hold on
plot(R*cos(th),R*sin(th),'k--')
s=plot(1,0,'r.','markersize',16,'erasemode','xor');
xs=r*cos(th);
ys=r*sin(th);
ps=plot(1+xs,ys,'--','markersize',2,'erasemode','xor');
x0=R;
y0=0;
pl=plot([0,x0],[0,0],'-m.','erasemode','xor');
axis equal
grid on
fs=16;
xlabel('\itx/r\rm-E','fontsize',fs)
ylabel('\ity/r\rm_E','fontsize',fs)
title('在地球上观察行星绕太阳的运行轨迹','fontsize',fs)
text(0,0,'地球','fontsize',fs)
text(-1-r,(1+r)/2,'穹顶','fontsize',fs)
stext=text(1,0,'太阳','fontsize',fs)
ptext=text(x0,0,planet{i},'fontsize',fs);
pause
t=0;
dt=TE/200;
if i>2dt=dt*2;end
while get(fg,'CurrentCharacter')~=char(27)
t=t+dt;
xE=cos(wE*t);yE=sin(wE*t);
x=r*cos(w*t);y=r*sin(w*t);
set(s,'xdata',xE,'ydata',yE);
set(p,'xdata'.xE+x,'ydata',yE+y);
set(ps,'xdata',xE+xs,'ydata',yE+ys);
th=atan2(y+yE,x+xE);
X=R*cos(th);Y=R*sin(th);
set(pl,'xdata',[0,X],'ydata',[0,Y])
set(stext,'position'[xE+x,yE+y]);
plot([x0,xE+x],[y0,yE+y])
x0=xE+x;y0=yE+y;
drawnow
end

中 text(-r-1,0,['\itr/r\rm_E='num2str(r)],'fontsize',fs)这句话有问题,我也不是很懂,这段程序也是我百度的,求大神指点,这里面有什么错误啊。。。在软件里说这不应为matlab表达式

我改了下,现在能运行了:
clear
i=input('Please choose a planet:1(水星)2(金星)3(火星)4(木星)5(土星):');
r=7.78*1e11;
if i<1||i>5
return
end
planet={'水星','金星','火星','木星','土星'};
MS=1.99e30;
G=6.67e-11;
k=G*MS/4/pi^2;
T=sqrt(r^3/k);
w=2*pi/T;
rE=1.496e11;
TE=sqrt(rE^3/k);
wE=2*pi/TE;
r=r/rE;
R=1+r;
th=linspace(0,2*pi);
fg=figure;
plot(0,0,'g.','markersize',15)
plot(cos(th),sin(th),'r--')
hold on
plot(R*cos(th),R*sin(th),'k--')
s=plot(1,0,'r.','markersize',16,'erasemode','xor');
xs=r*cos(th);
ys=r*sin(th);
ps=plot(1+xs,ys,'--','markersize',2,'erasemode','xor');
x0=R;
y0=0;
pl=plot([0,x0],[0,0],'-m.','erasemode','xor');
axis equal
grid on
fs=16;
xlabel('\itx/r\rm-E','fontsize',fs)
ylabel('\ity/r\rm_E','fontsize',fs)
title('在地球上观察行星绕太阳的运行轨迹','fontsize',fs)
text(0,0,'地球','fontsize',fs)
text(-1-r,(1+r)/2,'穹顶','fontsize',fs)
stext=text(1,0,'太阳','fontsize',fs);
ptext=text(x0,0,planet{i},'fontsize',fs);
pause
t=0;
dt=TE/200;
if i>2
dt=dt*2;
end
while get(fg,'CurrentCharacter')~=char(27)
t=t+dt;
xE=cos(wE*t);yE=sin(wE*t);
x=r*cos(w*t);y=r*sin(w*t);
set(s,'xdata',xE,'ydata',yE);
set(pl,'xdata',xE+x,'ydata',yE+y);
set(ps,'xdata',xE+xs,'ydata',yE+ys);
th=atan2(y+yE,x+xE);
X=R*cos(th);Y=R*sin(th);
set(pl,'xdata',[0,X],'ydata',[0,Y])
set(stext,'position',[xE+x,yE+y]);
plot([x0,xE+x],[y0,yE+y])
x0=xE+x;
y0=yE+y;
drawnow
end追问

不对啊,结果图(木星)应该是这样的

追答

不是这样吗?你截个图看看。

追问

是这样的

追答

没啥大的差别呀,你有什么特殊要求吗?

追问

你的运行出来是什么样子,你给我发下截图把

最重要的是那条螺旋线

追答

就是这样子的,同一个程序运行出来的,没有差别。你原来的程序运行不了,语法有错的地方,我改过来了,数据没改动。所以,运行结果是一样的。

追问

本来就没有那条螺旋线吗

追答

不要螺旋线是吧?你的意思是螺旋线都是重合的,每圈的都重合,是吧?

追问

没有,我需要的是那条螺旋线,就是那个看起来很漂亮的花纹,你改过的程序运行出来只有三个圆

追答

你想要几个圆?

追问

我想要的是这个

而你的程序写出来是这个

追答

程序应没错,你加我QQ2674716548,我给你说说咋用。

温馨提示:答案为网友推荐,仅供参考
相似回答