Matlab程序设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
中南大学
题目Matlab程序设计
学生姓名
指导教师
学院地球科学与信息物理学院
专业班级测绘1004
学生学号
2013年 10月 28 日
一、试验目的及要求
已知ALOS卫星为用户提供的轨道数据,总共有28个轨道位置点,包括轨道点的时间、空间位置(x,y,z)及其在该点的速度(dx,dy,dz),任意两个轨道点的获取时间相隔为60秒。要求利用各种数据插值方法计算数据获取时间内任意时刻的卫星所在的位置。数据文件“LED-ALPSRP063392880-P1.1__D.orbit.txt”提供了卫星平台的相关参数及轨道数据。请编写程序实现轨道数据的读出、数据插值及轨道加密后的数据文件的存储。并用三维绘图命令画出地球及相应轨道
二、试验过程
1、数据读取
2、拉格朗日内插法
lagrange
3、文件存储
三、试验代码
fid =
fopen('F:\MATLAB_exp2\LED-ALPSRP063392880-P1.1__D.orbit.txt','r'); vec_num = textscan(fid,'%s%n',1);
vec_num=vec_num{2};
vec_time= textscan(fid,'%s%n%s',1);
vec_time=vec_time{2};
vec_intv=textscan(fid,'%s%n%s',1);
vec_intv=vec_intv{2};
mat_pos=zeros(28,3);
mat_velo=zeros(28,3);
for i=1:28
vec_pos=textscan(fid,'%s%n%n%n%s%s%s',1);
vec_velo=textscan(fid,'%s%n%n%n%s%s%s',1);
mat_pos(i,:)=[vec_pos{2} vec_pos{3} vec_pos{4}];
mat_velo(i,:)=[vec_velo{2} vec_velo{3} vec_velo{4}];
end
fclose(fid)
XT=mat_pos(:,1);
XT=XT';
YT=mat_pos(:,2);
YT=YT';
ZT=mat_pos(:,3);
ZT=ZT';
X1=mat_velo(:,1);
X1=X1';
Y1=mat_velo(:,2);
Y1=Y1';
Z1=mat_velo(:,3);
Z1=Z1';
t=vec_time:60:(vec_time+60*27);
t_interp=vec_time:1:(vec_time+60*27);
y0_x=XT;
y0_y=YT;
y0_z=ZT;
y1_x=X1;
y1_y=Y1;
y1_z=Z1;
xxx = lagrange(t,y0_x,t_interp);
yyy = lagrange(t,y0_y,t_interp);
zzz = lagrange(t,y0_z,t_interp);
plot3(xxx,yyy,zzz);
fid2 = fopen('data.dat','w');
fprintf(fid2,'number_of_state_vectors: %d\r\n',length(t_i nterp));
fprintf(fid2,'time_of_first_state_vector: %d s\r\n',vec_time); fprintf(fid2,'state_vector_interval: 1 s\r\n');
for i=1:length(t_interp)
fprintf(fid2,'state_vector_position_ %d: %.4f %.4f %.4f m m m\r\n',i,xxx(1,i),yyy(1,i),zzz(1,i));
end
fclose(fid2);
四、试验心得
由于近期在准备考取武汉大学的研究生,因此时间较为紧张,所以试验做的相对仓促,只是完成了数据的读取、拉格朗日内插和数据的存储等步骤,但通过这些简单的步骤的编写,还是让我对Matlab这款程序开发软件的强大功能有了更深入的了解,受益良多,所做不足之处在此表示十分抱歉,还望老师谅解!