文档库

最新最全的文档下载
当前位置:文档库 > Matlab程序设计报告

Matlab程序设计报告

中南大学

Matlab程序设计报告

题目Matlab程序设计

学生姓名

指导教师

学院地球科学与信息物理学院

专业班级测绘1004

学生学号

2013年 10月 28 日

一、试验目的及要求

已知ALOS卫星为用户提供的轨道数据,总共有28个轨道位置点,包括轨道点的时间、空间位置(x,y,z)及其在该点的速度(dx,dy,dz),任意两个轨道点的获取时间相隔为60秒。要求利用各种数据插值方法计算数据获取时间内任意时刻的卫星所在的位置。数据文件“LED-ALPSRP063392880-P1.1__D.orbit.txt”提供了卫星平台的相关参数及轨道数据。请编写程序实现轨道数据的读出、数据插值及轨道加密后的数据文件的存储。并用三维绘图命令画出地球及相应轨道

二、试验过程

1、数据读取

Matlab程序设计报告

2、拉格朗日内插法

Matlab程序设计报告

lagrange

3、文件存储

Matlab程序设计报告

三、试验代码

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这款程序开发软件的强大功能有了更深入的了解,受益良多,所做不足之处在此表示十分抱歉,还望老师谅解!