Matlab仿真实例-卫星轨迹
利用Matlab进行航空航天系统仿真与分析

利用Matlab进行航空航天系统仿真与分析航空航天系统仿真与分析是现代航空航天工程中不可或缺的重要环节。
利用Matlab这一强大的数学软件工具,工程师们能够模拟和分析各种航空航天系统的性能和行为,为设计、优化和决策提供有力的支持。
首先,Matlab提供了丰富的数学建模和仿真功能,使得航空航天系统的振动、力学、控制等方面可以被准确地描述和分析。
例如,对于一个飞机的结构设计,可以使用Matlab建立系统的有限元模型,通过求解方程组得到结构的模态振动频率和模态形状,进而评估结构的稳定性和动力特性。
这有助于工程师们在设计过程中及早发现潜在问题并加以解决,从而提高飞机的安全性和性能。
其次,Matlab还提供了强大的信号处理和控制系统设计工具,为航空航天系统的控制和导航问题提供了有效的解决方案。
例如,对于一个航天器的姿态控制系统,可以利用Matlab进行系统建模和仿真,验证控制策略的有效性和稳定性。
此外,Matlab还提供了模糊控制、神经网络等先进的控制方法的工具包,使得工程师们能够更精确地设计和优化航空航天系统的控制算法。
在航空航天系统仿真与分析过程中,数据的处理和可视化是不可或缺的步骤。
Matlab提供了强大的数据处理工具和图像绘制功能,使得工程师们能够对仿真结果进行全面的分析和展示。
例如,利用Matlab的统计分析工具,可以对仿真结果进行参数敏感性分析,从而得到系统的性能指标和工作状态的分布情况。
此外,Matlab还提供了各种绘图函数和工具箱,使得工程师们能够直观地展示数据和结果,为后续决策提供可靠的依据。
最后,对于复杂的航空航天系统,其仿真模型往往由多个不同的子系统组成,需要进行集成和协同仿真。
Matlab提供了强大的系统建模和集成仿真工具,使得不同子系统之间的交互与协同可以被准确地模拟和分析。
例如,对于一个飞行器的动力学和控制系统,可以使用Matlab进行整机级别的系统建模和仿真,对系统的整体性能和响应进行分析。
GPS卫星轨道计算及其MATLAB仿真

GPS卫星轨道计算及其MATLAB仿真黎奇,白征东,李帅,陈波波(清华大学地球空间信息研究所,北京 100084)一、程序设计思路1. 读取RINEX文件(注意:文件路径)2. 计算测量日周积秒(测量日的格里历→GPST)3. 按卫星轨道计算步骤计算WGS-84坐标系坐标(内插)4. 按需要将WGS-84坐标系下坐标转换为所需坐标系坐标5. 画图输出二、n 文件说明及读取程序参考时刻oe t 的RINEX 格式的 “”广播星历文件具体如下:(加粗部分为本次轨道化Ω,率i ,弧度/秒4-22)标svacc ,米)收到的卫星信号解,秒)文件名:RinexNreader.m 输 入:文件地址,卫星编号三、计算测量日的周积秒文件名:GCtoGPS.m (其中调用函数:GCtoJD.m)输入:指定公历的年、月、日、时、分、秒文件名:GCtoJD.m输 入:指定公历的 年、月、日四、GPS 卫星轨道计算步骤及计算程序1. 计算卫星运动的平均角速度n平均角速度()03n =经摄动参数n ∆改正后的平均角速度0n n n =+∆3#61-79),n ∆(2#42-60);14323.98600510/GM m s =⨯ 2. 计算归化时间k t说明:①广播星历是oe t 时刻的,对应的轨道参数也是oe t 时刻的,而观测时间在t 时刻,显然oe t t <。
所以,要想获得t 时刻的轨道参数,需要知道t 与oe t 之间的差值即k t 。
以此,按照oe t 时刻轨道参数,外推t 时刻轨道参数。
②k t 的起算时间是星期六/星期日子夜0点,当302400k t s >时,604800k t s -;当302400k t s <-时,+604800k t s 。
(604800s=1周) =k oe t t t -,且604800302400604800302400k k k k k k t t t t t t =-⎧⎨=+⎩> <-已知:oe t (1#4-21)3. 计算观测时刻的平近点角k M0k k M M nt =+已知:0M (2#61-79),n (见1),k t (见2) 4. 计算观测时刻的偏近点角k Esin k k k E M e E =+已知:k M (见3),e (3#23-41)方法:迭代解算,设初值0k k E M =,迭代2次基本收敛。
matlab卫星轨道计算

matlab卫星轨道计算Matlab卫星轨道计算引言:卫星轨道计算是航天工程中的重要环节,可以帮助我们准确预测卫星的轨道位置和运动状态。
在Matlab中,我们可以利用其强大的数学计算能力和图形绘制功能,进行卫星轨道计算和可视化分析。
本文将介绍如何使用Matlab进行卫星轨道计算,以及一些常用的计算方法和技巧。
一、卫星轨道类型及基本概念卫星轨道可以分为地心轨道和非地心轨道两种类型。
地心轨道包括圆形轨道和椭圆轨道,而非地心轨道则包括近地点轨道和远地点轨道等。
在进行卫星轨道计算之前,我们需要了解一些基本概念,如轨道倾角、轨道升交点经度等。
二、Matlab中的卫星轨道计算函数Matlab提供了一些常用的卫星轨道计算函数,如kepler.m、eci2aer.m和eci2lla.m等。
其中,kepler.m函数可以用于计算卫星的开普勒元素,eci2aer.m函数可以将地心惯性坐标系转换为方位-仰角-距离坐标系,eci2lla.m函数可以将地心惯性坐标系转换为经纬度坐标系。
三、卫星轨道计算实例下面以一个实例来演示如何使用Matlab进行卫星轨道计算。
假设我们有一个地球同步轨道卫星,其开普勒元素为:轨道倾角为28.5度,升交点经度为135度,轨道高度为35786千米。
首先,我们可以使用kepler.m函数计算出卫星的开普勒元素:a = 35786; % 轨道长半轴e = 0; % 轨道离心率i = deg2rad(28.5); % 轨道倾角omega = deg2rad(135); % 升交点经度w = 0; % 近地点幅角M = 0; % 平近点角[~, ~, ~, nu, ~, ~] = kepler(a, e, i, omega, w, M);然后,我们可以使用eci2aer.m函数将地心惯性坐标系转换为方位-仰角-距离坐标系:[az, el, r] = eci2aer(r_ECI, v_ECI, lat, lon, h, t);我们可以使用eci2lla.m函数将地心惯性坐标系转换为经纬度坐标系:[lat, lon, h] = eci2lla(r_ECI, t);通过以上步骤,我们可以得到卫星在不同时间点的方位角、仰角、距离以及经纬度信息。
基于某MATLAB地GPS信号仿真完整源代码123

配套毕业设计论文见百度文库请搜索《基于MATLAB的GPS信号仿真123》附录C 仿真程序代码1、数据码的产生function datacode=data(x)y=rand(1,x);for i=1:xif y(i)<0.5datacode(i)=0;elsedatacode(i)=1;endendy(1)=0;show2(1)=datacode(1);q=2;for i=1:length(datacode)for j=1:100y(q)=i-1+j*0.01;show2(q)=datacode(i);q=q+1;endendplot(y,show2);axis([0 length(datacode) -0.2 1.2]);1、C/A码的产生及扩频调制clc;c=input('请输入数据码的长度:c=');y=rand(1,c);for i=1:cif y(i)<0.5datacode(i)=0;elsedatacode(i)=1;endendx(1)=0;show(1)=datacode(1);p=2;for i=1:cfor j=1:100x(p)=i-1+j*0.01;show(p)=datacode(i);p=p+1;endendsubplot(4,1,1);plot(x,show);title('数据码');axis([0 c -0.2 1.2]);number=input('请输入卫星PRN号码:number=');cacode=CAgenerate(number);temp=cacode(1:100)x(1)=0;show(1)=temp(1);p=2;%下面的循环是为了将结果显示成方波形式for i=1:length(temp)for j=1:100x(p)=i-1+j*0.01;show(p)=temp(i);p=p+1;endend%画出仿真结果图subplot(4,1,2);plot(x,show);title('C/A码');axis([0 100 -0.2 1.2]);%截取CA码的前十个数据进行扩频,每个数据插入5个CA序列 cacode1=cacode(1:10);for i=1:cif datacode(i)==1datacodek((i-1)*50+1:i*50)=ones(1,50);elsedatacodek((i-1)*50+1:i*50)=zeros(1,50);endendfor i=1:cfor j=1:50addr=rem(((i-1)*50+j),10);if addr==0addr=10;endkuopindata((i-1)*50+j)=xor(datacodek((i-1)*50+j),cacode1(addr));endend%下面的循环是为了将结果显示成方波形式x(1)=0;show(1)=kuopindata(1);p=2;for i=1:length(kuopindata)for j=1:100x(p)=i-1+j*0.01;show(p)=kuopindata(i);p=p+1;endendsubplot(4,1,3);plot(x,show);title('扩频数据');axis([0 length(kuopindata) -0.2 1.2]);%每位数据通过正弦波来调制Sinwave=sin([0:2*pi/8:2*pi*7/8]);Sinwave=single(Sinwave);GPSsignal=zeros(1,1);Sinwave=[Sinwave Sinwave Sinwave Sinwave Sinwave];for i=1:length(kuopindata)GPSsignal=[GPSsignal kuopindata(i)*Sinwave];endGPSsignal=GPSsignal(2:length(GPSsignal));subplot(4,1,4);plot(GPSsignal(1:500));title('调制后数据');C/A码产生的子程序CAgenerate:function cacode=CAgenerate(number)if (number<1)|(number>37)disp('输入参数必须在1 ~ 37之间取值');returnendCACode=zeros(1,1023); %生成一个1*1023的零矩阵% 设置寄存器初相Reg1=[1,1,1,1,1,1,1,1,1,1];Reg2=[1,1,1,1,1,1,1,1,1,1];% 设置反馈点,1表示需要反馈gp1=[0,0,1,0,0,0,0,0,0,1];gp2=[0,1,1,0,0,1,0,1,1,1];% 抽头G2Table=[ 2,3,4,5,1,2,1,2,3,2,3,5,6,7,8,9,1,2,3,4,5,6,1,4,5,6,7,8,1,2,3 ,4,5,4,1,2,4;6,7,8,9,9,10,3,4,6,7,8,9,10,4,5,6,7,8,9,3,6,7,8,9,10,6,7,8,9,10,10,7,8,10;] % 生成一个周期的伪码序列for m=1:1023CACode(m)=mod(Reg1(10)+Reg2(G2Table(1,number))+Reg2(G2Table(2,number)),2);Reg1=[mod(Reg1*gp1',2),Reg1(1:9)];Reg2=[mod(Reg2*gp2',2),Reg2(1:9)];endcacode=CACode;2、C/A码的相关性分析clc;n=input('请输入卫星PRN号码:n=');cacode1=CAgenerate(n);%在G2序列中找出-1并转换为0,找出1并转换为1ind1=find(cacode1==1);ind2=find(cacode1==0);cacode1(ind1)=-ones(1,length(ind1)); cacode1(ind2)=ones(1,length(ind2)); N=1023;z=zeros(1,1023);for i=0:N-1for k=i+1:N-1z1(k)=cacode1(k)*cacode1(k-i); z(i+1)=z(i+1)+z1(k);endz(i+1)=z(i+1)/N;endsubplot(2,1,1);plot(z);title('自相关特性');axis([-50 1300 -0.5 1.2]);n=input('请输入卫星PRN号码:n='); cacode2=CAgenerate(n);ind1=find(cacode2==1);ind2=find(cacode2==0);cacode2(ind1)=-ones(1,length(ind1)); cacode2(ind2)=ones(1,length(ind2));N=1023;h=zeros(1,1023);for i=0:N-1for k=i+1:N-1h1(k)=cacode1(k)*cacode2(k-i); h(i+1)=h(i+1)+h1(k);endh(i+1)=h(i+1)/N;endsubplot(2,1,2);plot(h);title('互相关特性');axis([-50 1300 -0.5 1]);4、 P码的产生及扩频调制clc;c=input('请输入数据码的长度:c='); y=rand(1,c);for i=1:cif y(i)<0.5datacode(i)=0;elsedatacode(i)=1;endendx(1)=0;show(1)=datacode(1);p=2;for i=1:cfor j=1:100x(p)=i-1+j*0.01;show(p)=datacode(i);p=p+1;endendsubplot(4,1,1);plot(x,show);title('数据码');axis([0 c -0.2 1.2]);NumberPCode=input('enter the NumberPcode='); NumberShift=input('enter the NumberShift=');a=input('enter a=');pcode=Pcode(a,NumberPCode,NumberShift);x(1)=0;show(1)=pcode(1);p=2;for i=1:length(pcode)for j=1:100x(p)=i-1+j*0.01;show(p)=pcode(i);p=p+1;endendsubplot(4,1,2);plot(x,show);title('P码');axis([0 length(pcode) -0.2 1.2]);pcode=pcode(1:10);for i=1:cif datacode(i)==1datacodek((i-1)*50+1:i*50)=ones(1,50); elsedatacodek((i-1)*50+1:i*50)=zeros(1,50); endendfor i=1:cfor j=1:50addr=rem(((i-1)*50+j),10);if addr==0addr=10;endkuopindata((i-1)*50+j)=xor(datacodek((i-1)*50+j),pcode(addr)); endendx(1)=0;show(1)=kuopindata(1);p=2;%下面的循环是为了将结果显示成方波形式for i=1:length(kuopindata)for j=1:100x(p)=i-1+j*0.01;show(p)=kuopindata(i);p=p+1;endendsubplot(4,1,3);plot(x,show);title('扩频数据');axis([0 length(kuopindata) -0.2 1.2]);%每位数据通过正弦波来调制Sinwave=sin([0:2*pi/8:2*pi*7/8]);Sinwave=single(Sinwave);GPSsignal=zeros(1,1);Sinwave=[Sinwave Sinwave Sinwave Sinwave Sinwave];for i=1:length(kuopindata)GPSsignal=[GPSsignal kuopindata(i)*Sinwave];endGPSsignal=GPSsignal(2:length(GPSsignal));subplot(4,1,4);title('调制后数据');plot(GPSsignal(1:500));以下是P码产生的子程序Pcode:function pcode=Pcode(a,NumberPCode,NumberShift) % P码产生reg1a=[0 0 0 1 0 0 1 0 0 1 0 0];reg1b=[0 0 1 0 1 0 1 0 1 0 1 0];reg2a=[1 0 1 0 0 1 0 0 1 0 0 1];reg2b=[0 0 1 0 1 0 1 0 1 0 1 0];rx1a=0;rx1b=0;rx2a=0;rx2b=0;x1bWork=1;x2aWork=1;x2bWork=1;N=NumberShift;C1=4092*3750;C2=4093*3749;z1a=mod(N,4092);%取余数x1a=mod([(N-z1a)/4092],3750);y1a=(N-z1a-4092*x1a)/C1;if ((N-C1*y1a)>=C2)z1b=4092;x1bWork=0;x1b=3748;elsez1b=mod((N-C1*y1a),4093);x1bWork=1;x1b=(N-z1b-C1*y1a)/4093;endm=mod(N,(C1+37));y2a=(N-m)/(C1+37);if (m>=C1)dv=m-C1;elsedv=0;endz2a=mod((m-dv),4092);x2a=mod((((m-dv)-z2a)/4092),3750);z2b=mod((m-dv),4093);if (m>=C2)x2b=3748;elsex2b=(m-z2b)/4093;end%各移位寄存器的状态for i=1:z1aslave1a=mod(reg1a(6)+reg1a(8)+reg1a(11)+reg1a(12),2);reg1a(2:12)= reg1a(1:11);reg1a(1)=slave1a;endfor i=1:z1bslave1b=mod(reg1b(1)+reg1b(2)+reg1b(5)+reg1b(8)+reg1b(9)+reg1b(10)+reg1b(11 )+reg1b(12),2);reg1b(2:12)=reg1b(1:11);reg1b(1)=slave1b;endfor i=1:z2aslave2a=mod(reg2a(1)+reg2a(3)+reg2a(4)+reg2a(5)+reg2a(7)+reg2a(8)+reg2a(9)+ reg2a(10)+reg2a(11+reg2a(12)) ,2);reg2a(2:12)=reg2a(1:11);reg2a(1)=slave2a;endfor i=1:z2bslave2b=mod(reg2b(2)+reg2b(3)+reg2b(4)+reg2b(8)+reg2b(9)+reg2b(12) ,2);reg2b(2:12)=reg2b(1:11);reg2b(1)=slave2b;end%各控制变量的判断if z1a==4091rx1a=1;endif z1b==4092rx1b==1;endif z2a==4091rx2a=1;x2aWork=0;endif z2b==4092rx2b=1;x2bWork=0;end%开始产生P码p=zeros(NumberPCode,1);x1acou=0;x1bcou=0;x2acou=0;x2bcou=0;cou37=dv;x2(1:a)=1;for i=1:(NumberPCode+37)x1(i)=mod( reg1a(12)+reg1b(12),2);x2(i+a)=mod( reg2a(12)+reg2b(12),2);%寄存器x1b的移位函数if x1bWork==1if rx1b==0slave1b=mod(reg1b(1)+reg1b(2)+reg1b(5)+reg1b(8)+reg1b(9)+reg1b(10)+reg1b(11)+reg1b(12),2);reg1b(2:12)=reg1b(1:11);reg1b(1)=slave1b;else if rx1b==1reg1b=[0 0 1 0 1 0 1 0 1 0 1 0];rx1b=0;endendelse if x1bWork==0endendif reg1b==[0 1 0 1 0 1 0 1 0 1 0 0 ]rx1b=1;x1bcou=x1bcou+1;if x1bcou==3749x1bwork=0;x1bcou=0;endend%寄存器x1a的移位函数if rx1a==0slave1a=mod(reg1a(6)+reg1a(8)+reg1a(11)+reg1a(12),2);reg1a(2:12)=reg1a(1:11);reg1a(1)=slave1a;else if rx1a==1reg1a=[0 0 0 1 0 0 1 0 0 1 0 0];rx1a=0;endendif reg1a==[0 0 1 0 0 1 0 0 1 0 0 0]rx1a=1;x1acou=x1acou+1;if x1acou==3750x1bwork=1;x1acou=0;endend%寄存器x2b的移位函数if x2bWork==1if rx2b==0slave2b=mod(reg2b(2)+reg2b(3)+reg2b(4)+reg2b(8)+reg2b(9)+reg2b(12) ,2); reg2b(2:12)=reg2b(1:11);reg2b(1)=slave2b;else if rx2b==1x2bout=reg2b(11);reg2b=[0 0 1 0 1 0 1 0 1 0 1 0];rx2b=0;endendelse if x2bWork==0reg2b=[0 0 1 0 1 0 1 0 1 0 1 0];x2bWork=1;rx2b=0;endendif reg2b==[0 1 0 1 0 1 0 1 0 1 0 0]rx2b=1;x2bcou=x2bcou+1;if x2bcou==3749x2bWork=0;x2bcou=0;endend%寄存器x2a的移位函数if x2aWork==1if rx2a==0slave2a=mod(reg2a(1)+reg2a(3)+reg2a(4)+reg2a(5)+reg2a(7)+reg2a(8)+reg2a(9)+reg2a(10)+reg2a(11)+reg2a(12) ,2); reg2a(2:12)=reg2a(1:11);reg2a(1)=slave2a;else if rx2a==1reg2a=[1 0 1 0 0 1 0 0 1 0 0 1];rx2a=0;endendelse if x2aWork==0if rx2a==1cou37=cou37+1;if cou37==37rx2a=0;x2awork=1;cou37=0;endendendendif reg2a==[0 1 0 0 1 0 0 1 0 0 1 1] rx2a=1;x2acou=x2acou+1;if x2acou==3750x2awork=0;x2acou=0;endendendfor i=1:NumberPCodep(i)= mod( x1(i)+x2(i),2);endp=p';pcode=p';5、 P码的相关性分析clc;NumberPCode=input('enter the number Pcode='); NumberShift=input('enter the numbershift='); a=input('enter a=');pcode=Pcode(a,NumberPCode,NumberShift);ind1=find(pcode==1);ind2=find(pcode==0);pcode(ind1)=-ones(1,length(ind1));pcode(ind2)=ones(1,length(ind2));M=NumberPCode;z=zeros(1,M);for i=0:M-1for k=i+1:M-1z1(k)=pcode(k)*pcode(k-i);z(i+1)=z(i+1)+z1(k);endz(i+1)=z(i+1)/M;endsubplot(2,1,1);plot(z);title('自相关特性');axis([-50 M -0.5 1.2]);a=input('enter a=');NumberShift=input('enter the numbershift='); pcode2=Pcode(a,NumberPCode,NumberShift);h=zeros(1,M);for i=0:M-1for k=i+1:M-1h1(k)=pcode(k)*pcode2(k-i);h(i+1)=h(i+1)+h1(k);endh(i+1)=h(i+1)/M; endsubplot(2,1,2);plot(h);title('互相关特性'); axis([-50 M -0.5 1]);。
卫星星下点轨迹Matlab仿真

使用Matlab绘制卫星星下点轨迹1.地球静止轨道卫星,倾角分别为0,30,90度。
clc; clear;t = 0:1:6;we = 360/24;u = we*t;i = 30;fai = asind( sind(i)*sind(u) );deltalmd = atand( cosd(i)*tand(u) );if(i==90)deltalmd(end) = 90;endlmd = deltalmd - we*t;% use symetry to generate the other datafor j = 1:6lmd(j+7) = -lmd(7-j);fai(j+7) = fai(7-j);endfor j = 1:12lmd(j+13) = lmd(13-j);fai(j+13) = -fai(13-j);endh = geoshow('landareas.shp', 'FaceColor', [1 1 1]); grid onhold onplot(lmd, fai); title(['GEO¹ìµÀ£¬Çã½Çi=', num2str(i)])-200-150-100-50050100150200GEO轨道,倾角i=30-200-150-100-50050100150200-200-150-100-50050100150200-200-150-100-50050100150200GEO 轨道,倾角i=90-200-150-100-500501001502002.回归轨道卫星,回归周期1天,倾角分别为60度,周期为4h。
clc; clear;t = [0 1/3 1/2 2/3 4/5 1];we = 360/24;w = 180/2;u = w*t;i = 60;fai = asind( sind(i)*sind(u) );deltalmd = atand( cosd(i)*tand(u) );lmd = deltalmd - we*t;% use symetry to generate the other datafor j = 1:5lmd(j+6) = lmd(6) + ( lmd(6) - lmd(6-j) );fai(j+6) = fai(6-j);endfor j = 1:10if (lmd(11) + ( lmd(11) - lmd(11-j) )) > 180lmd(j+11) = -180 + rem(lmd(11) + ( lmd(11) - lmd(11-j) ), 180);elselmd(j+11) = lmd(11) + ( lmd(11) - lmd(11-j) );endfai(j+11) = -fai(11-j);endcnt = 1;for m = 1:5for j = 1:21if (lmd(j+21*(m-1)) + 60) > 180lmd(j+21*m) = -180 + rem(lmd(j+21*(m-1)) + 60, 180);record(m,cnt) = j; % record when tranverse from east to westcnt = cnt + 1;elselmd(j+21*m) = lmd(j+21*(m-1)) + 60;endfai(j+21*m) = fai(j+21*(m-1));endcnt = 1;endload stillh = geoshow('landareas.shp', 'FaceColor', [1 1 1]);grid onhold onplot(lmd1(2:20), fai1(2:20), 'b--'); % earth stillplot(lmd(1:6), fai(1:6), 'bo');plot(lmd(21*6), fai(21*6), 'bo');plot(lmd(1:13), fai(1:13)); plot(lmd(14:21), fai(14:21));for m = 1:5plot(lmd(21*m+1:record(m,1)+21*m-1), fai(21*m+1:record(m,1)+21*m-1)); plot(lmd(record(m,1)+21*m:21*(m+1)), fai(record(m,1)+21*m:21*(m+1)));plot(lmd(21*m), fai(21*m), 'bo');endtitle(['ÐÇϵã¹ì¼££ºT=4h¹ìµÀ£¬Çã½Çi=', num2str(i)])T=4h轨道,倾角i=60-200-150-100-50050100150200星下点轨迹:T=4h轨道,倾角i=60-200-150-100-50050100150200地球不转时的星下点clc; clear;t = [0 1/3 1/2 2/3 4/5 1];we = 360/24;w = 180/2;u = w*t;i = 60;fai = asind( sind(i)*sind(u) );deltalmd = atand( cosd(i)*tand(u) );lmd = deltalmd; % earth still% use symetry to generate the other datafor j = 1:5lmd(j+6) = lmd(6) + ( lmd(6) - lmd(6-j) );fai(j+6) = fai(6-j);endfor j = 1:10if (lmd(11) + ( lmd(11) - lmd(11-j) )) > 180lmd(j+11) = -180 + rem(lmd(11) + ( lmd(11) - lmd(11-j) ), 180);elselmd(j+11) = lmd(11) + ( lmd(11) - lmd(11-j) );endfai(j+11) = -fai(11-j);endfor j = 1:21if (lmd(j) + 180) > 180lmd(j) = -180 + rem(lmd(j) + 180, 180);elselmd(j) = lmd(j) + 180;endfai(j) = fai(j);endlmd(11) = 0;lmd1 = lmd;fai1 = fai;save still lmd1fai1h = geoshow('landareas.shp', 'FaceColor', [1 1 1]);grid onhold onplot(lmd(2:20), fai(2:20));% plot(lmd(1:13), fai(1:13)); plot(lmd(14:21), fai(14:21));% for m = 1:5% plot(lmd(21*m+1:record(m,1)+21*m-1), fai(21*m+1:record(m,1)+21*m-1)); plot(lmd(record(m,1)+21*m:21*(m+1)), fai(record(m,1)+21*m:21*(m+1)));% endtitle(['T=4h¹ìµÀ£¬Çã½Çi=', num2str(i)])T=4h轨道,倾角i=60-200-150-100-50050100150200。
matelab星体运动轨迹

嫦娥一号与月亮、地球、太阳关系演示图欧阳仕粮学号:20084051014(吉首大学物理与机电工程学院,湖南吉首416000)摘要:用matlab模拟嫦娥一号人造卫星运围绕月球做周期性运动时,人造卫星、月球、地球相对于太阳的运动轨迹动画。
展现了人造卫星绕月飞行时相对与参照物太阳的运动轨迹,便于直观的了解卫星相对于太阳的相对运动。
关键词:卫星运动轨迹;相对运动;数学软件matlab1、引言大家都知道我们所了解的地球围绕太阳做近似圆周运动的规则运动,当然月球,人造地球卫星也是如此,而我们一直以来所关注的登月工程的探月卫星也是这样一种情况。
那月球、探月卫星嫦娥一号相对于太阳是一个怎样的情形,下面通过计算机软件matlab,来模拟一下月球、嫦娥一号相对太阳的运动动画,并描绘出轨迹。
2、原理假设我们所研究的所有星体处在同一水平面上。
地球距太阳的的平均距离为R,月球距地球的平均距离为r1,嫦娥一号距月球的平均距离为r2,地球公转角速度w1,月亮公转角速度w2,嫦娥一号绕月亮公转角速度w3。
我们从0每隔0.01到2 取一个弧度s1。
地球相对太阳转过的角度sita1,月亮相对地球转过的角度sita2,嫦娥一号相对月球转过的角度sita3,设开始时间为t=0,然后每隔时间T进行一次取样计算,计算各个星体的的位置坐标。
首先,确定太阳的位置为(0,0),根据圆周运动的轨迹方程确定地球的运行轨道(R*cos(s1),R*sin(s1)),确定月球围绕地球公转的轨道(R*cos(sita1)+r1*cos(s1),R*sin(sita1)+r1*sin(s1)),再确定画嫦娥一号绕月亮公转轨道(R*cos(sita1)+r1*cos(sita1)+r2*cos(s1),R*sin(sita1)+r1*sin(sita1)+r2*sin(s1)),这样就找出了地球、月球、嫦娥一号的轨迹。
分别在matlab中用plot函数画出。
低轨卫星轨道仿真matlab

低轨卫星轨道仿真matlab低轨卫星是指高度低于2000公里的卫星,它们的轨道高度较低,因此在地球表面可见时间较长,被广泛应用于通讯、天气预报、地球观测等领域。
而低轨卫星的轨道设计和仿真是卫星设计的重要环节之一,而matlab作为一种功能强大的计算软件,被广泛应用于低轨卫星轨道的仿真。
低轨卫星轨道的仿真通常包括以下几个方面:1.轨道参数计算:轨道参数包括半长轴、偏心率、轨道倾角、升交点赤经和近地点幅角等,这些参数的计算是卫星轨道设计的基础。
matlab中可以通过一些基本的数学公式和函数来计算这些参数。
2.轨道模拟:轨道模拟是指利用计算机模拟卫星在轨道上的运动状态,包括卫星在空间的位置、速度、加速度等。
matlab提供了一些典型的轨道模型,例如Kepler模型、SGP4模型等,可以用来模拟卫星的运动状态。
3.轨道优化:轨道优化是指通过调整卫星轨道参数,使卫星在轨道上的运动更加稳定、高效。
matlab提供了一些优化算法,例如遗传算法、模拟退火算法等,可以用来优化卫星轨道参数。
4.轨道控制:轨道控制是指通过控制卫星的推进器或姿态控制器,调整卫星在轨道上的位置、速度、姿态等。
matlab可以通过编写控制算法,来实现卫星轨道的控制。
在低轨卫星轨道仿真中,matlab具有以下优点:1.功能强大:matlab拥有强大的数学计算和数据处理能力,可以方便地对卫星轨道进行计算和分析。
2.易于编程:matlab的编程语言简单易学,可以方便地编写各种算法和模型。
3.开放性:matlab拥有丰富的工具箱和插件,可以方便地扩展其功能。
4.可视化:matlab拥有强大的可视化工具,可以将卫星轨道仿真结果以图表、动画等形式展示出来,便于分析和理解。
matlab在低轨卫星轨道仿真中具有重要的应用价值,可以方便地进行轨道参数计算、轨道模拟、轨道优化和轨道控制等方面的研究。
随着卫星技术的不断发展,matlab在卫星设计和应用中的作用也将越来越重要。
低轨卫星轨道仿真matlab

低轨卫星轨道仿真matlab低轨卫星轨道仿真可以使用MATLAB进行,以下是一个简单的步骤:1. 建立模型:首先需要建立一个低轨卫星模型。
这个模型可以基于卫星的物理参数,如质量、轨高度、自转等参数。
这些参数可以通过现有的卫星数据集或者自己计算获得。
2. 建立方程:在建立模型的同时,需要建立一个方程来描述卫星的运动。
这个方程可以使用牛顿第二定律或万有引力定律等经典物理学方程进行建模。
3. 运行仿真:使用MATLAB中的Simulink模块运行仿真。
Simulink提供了丰富的工具箱,可以帮助建模和仿真复杂的系统。
在Simulink中,可以使用运动仿真工具箱来仿真卫星的运动。
4. 可视化结果:在仿真运行结束后,可以使用MATLAB中的plot 模块来可视化结果。
将卫星的运动轨迹、速度、轨道高度等数据可视化出来,以便更好地理解卫星的运动行为。
下面是一个简单的低轨卫星轨道仿真的MATLAB代码示例,假设我们使用仿真工具箱来模拟卫星的运动:```matlab% 建立模型model = reshape(load("低轨卫星模型.mat"), [1 1 3]);model.M = [10.0 8.0 6.0]; % 卫星质量model.H = [300.0 200.0 200.0]; % 轨道高度model.Z = [0.1; 0.15; 0.2]; % 卫星轨道中心距地面的高度 model.V = [0.9; 0.94; 0.97]; % 卫星的速度% 建立方程F = 1.0; % 引力常数,近似为1g = 9.8; % 重力加速度,近似为9.8米/秒^2M = model.M; % 卫星质量h = model.H - 2*model.Z; % 卫星轨道中心距地面的高度model.P = 1.0; % 卫星的公转周期% 运行仿真Time = 0:0.01:1; % 仿真时间,单位为秒X = model.V*Time; % 卫星的X坐标Y = model.V*Time + h/2; % 卫星的Y坐标Z = model.V*Time + 3*h/2; % 卫星的Z坐标plot(X, Y, Z, "b"); % 可视化卫星的运动轨迹title("低轨卫星轨道仿真结果");```在这个代码中,我们使用了牛顿第二定律和万有引力定律来建立卫星的运动方程。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
卫星轨迹
一.问题提出
设卫星在空中运行的运动方程为:
其中是k 重力系数(k=401408km3/s)。
卫星轨道采用极坐标表示,通过仿真,研究发射速度对卫星轨道的影响。
实验将作出卫星在地球表面(r=6400KM ,θ=0)分别以v=8KM/s,v=10KM/s,v=12KM/s 发射时,卫星绕地球运行的轨迹。
二.问题分析
1.卫星运动方程一个二阶微分方程组,应用Matlab 的常微分方程求解命令ode45求解时,首先需要将二阶微分方程组转换成一阶微分方程组。
若设,则有:
2.建立极坐标如上图所示,初值分别为:卫星径向初始位置,即地球半径:y(1,1)=6400;卫星初始角度位置:y(2,1)=0;卫星初始径向线速度:y(3,1)=0;卫星初始周向角速度:y(4,1)=v/6400。
3.将上述一阶微分方程及其初值带入常微分方程求解命令ode45求解,可得到一定时间间隔的卫星的径向坐标值y(1)向量;周向角度坐标值y(2)向量;径向线速度y(3)向量;周向角速度y(4)向量。
4.通过以上步骤所求得的是极坐标下的解,若需要在直角坐标系下绘制卫星的运动轨迹,还需要进行坐标变换,将径向坐标值y(1)向量;周向角度坐标值y(2)向量通过以下方程转换为直角坐标下的横纵坐标值X,Y 。
5.卫星发射速度速度的不同将导致卫星的运动轨迹不同,实验将绘制卫星分别以v=8KM/s ,v=10KM/s ,v=12KM/s 的初速度发射的运动轨迹。
三.Matlab 程序及注释
1.主程序
v=input('请输入卫星发射速度单位Km/s :\nv=');%卫星发射速度输入。
axis([-264007000-1000042400]);%定制图形输出坐标范围。
%为了直观表达卫星轨迹,以下语句将绘制三维地球。
[x1,y1,z1]=sphere(15);%绘制单位球。
x1=x1*6400;y1=y1*6400;⎪⎪⎩⎪⎪⎨⎧-=+-=dt d dt dr r dt d dt d r r k dt r d θ
θθ2)(2
22222θ==)2(,)1(y r y ⎪⎪⎪⎪⎪⎩⎪⎪⎪⎪⎪⎨⎧**-=**+*-===)1(/)4()3(2)4()4()4()1()1()1()3()4()2()
3()1(y y y dt
dy y y y y y k dt dy y dt dy y dt dy ⎩⎨⎧*=*=)]
2(sin[)1(Y )]2(cos[)1(X y y y y
z1=z1*6400;%定义地球半径。
mesh(x1,y1,z1);
surf(x1,y1,z1);%绘制地球。
x0=[6400,0,0,v/6400];%微分方程初始值。
[t,y]=ode45(@YunDongFangCheng,[0,200000],x0);%将微分方程,时间变量范围,%以及微分方程初始值,传递给函数ode45求解微分方程。
%以下语句将径向坐标值y(1)向量,周向角度坐标值y(2)向量,
%转换为直角坐标下的横纵坐标值X,Y。
用于直角坐标下卫星轨迹绘制。
X=y(:,1).*cos(y(:,3));
Y=y(:,1).*sin(y(:,3));
%以下语句用于卫星轨迹绘制。
hold on;
plot(X,Y,'r.',X,Y,'b-');
grid on;
2.微分方程函数
function f=YunDongFangCheng(t,x)%定义状态变量函数。
K=401408;%K为重力系数。
f=[x(2);
-K/(x(1)*x(1))+x(1)*x(4)*x(4);
x(4);
-2/x(1)*x(2)*x(4)];
四.问题求解结果
1.卫星以v=8KM/s速度发射,绕地球运行的轨迹。
2.卫星以v=10KM/s速度发射,绕地球运行的轨迹。
3.卫星以v=12KM/s速度发射,脱离地球运行的轨迹。
4.三维空间下,卫星以v=10KM/s速度发射时,绕地球运行的轨迹。
5.三维空间下,卫星分别以v=8KM/s,v=10KM/s,v=12KM/s的速度发射的运动轨迹比较。