基于MATLAB的GPS信号仿真完整源代码123doc.docx
- 文档编号:1791481
- 上传时间:2022-10-24
- 格式:DOCX
- 页数:19
- 大小:17.97KB
基于MATLAB的GPS信号仿真完整源代码123doc.docx
《基于MATLAB的GPS信号仿真完整源代码123doc.docx》由会员分享,可在线阅读,更多相关《基于MATLAB的GPS信号仿真完整源代码123doc.docx(19页珍藏版)》请在冰豆网上搜索。
基于MATLAB的GPS信号仿真完整源代码123doc
配套毕业设计论文见XX文库
请搜索
《基于MATLAB的GPS信号仿真123》
附录C仿真程序代码
1、数据码的产生
functiondatacode=data(x)
y=rand(1,x);
fori=1:
x
ify(i)<0.5
datacode(i)=0;
else
datacode(i)=1;
end
end
y
(1)=0;
show2
(1)=datacode
(1);
q=2;
fori=1:
length(datacode)
forj=1:
100
y(q)=i-1+j*0.01;
show2(q)=datacode(i);
q=q+1;
end
end
plot(y,show2);
axis([0length(datacode)-0.21.2]);
1、C/A码的产生及扩频调制
clc;
c=input('请输入数据码的长度:
c=');
y=rand(1,c);
fori=1:
c
ify(i)<0.5
datacode(i)=0;
else
datacode(i)=1;
end
end
x
(1)=0;
show
(1)=datacode
(1);
p=2;
fori=1:
c
forj=1:
100
x(p)=i-1+j*0.01;
show(p)=datacode(i);
p=p+1;
end
end
subplot(4,1,1);
plot(x,show);
title('数据码');
axis([0c-0.21.2]);
number=input('请输入卫星PRN号码:
number=');
cacode=CAgenerate(number);
temp=cacode(1:
100)
x
(1)=0;
show
(1)=temp
(1);
p=2;
%下面的循环是为了将结果显示成方波形式
fori=1:
length(temp)
forj=1:
100
x(p)=i-1+j*0.01;
show(p)=temp(i);
p=p+1;
end
end
%画出仿真结果图
subplot(4,1,2);
plot(x,show);
title('C/A码');
axis([0100-0.21.2]);
%截取CA码的前十个数据进行扩频,每个数据插入5个CA序列
cacode1=cacode(1:
10);
fori=1:
c
ifdatacode(i)==1
datacodek((i-1)*50+1:
i*50)=ones(1,50);
else
datacodek((i-1)*50+1:
i*50)=zeros(1,50);
end
end
fori=1:
c
forj=1:
50
addr=rem(((i-1)*50+j),10);
ifaddr==0
addr=10;
end
kuopindata((i-1)*50+j)=xor(datacodek((i-1)*50+j),cacode1(addr));
end
end
%下面的循环是为了将结果显示成方波形式
x
(1)=0;
show
(1)=kuopindata
(1);
p=2;
fori=1:
length(kuopindata)
forj=1:
100
x(p)=i-1+j*0.01;
show(p)=kuopindata(i);
p=p+1;
end
end
subplot(4,1,3);
plot(x,show);
title('扩频数据');
axis([0length(kuopindata)-0.21.2]);
%每位数据通过正弦波来调制
Sinwave=sin([0:
2*pi/8:
2*pi*7/8]);
Sinwave=single(Sinwave);
GPSsignal=zeros(1,1);
Sinwave=[SinwaveSinwaveSinwaveSinwaveSinwave];
fori=1:
length(kuopindata)
GPSsignal=[GPSsignalkuopindata(i)*Sinwave];
end
GPSsignal=GPSsignal(2:
length(GPSsignal));
subplot(4,1,4);
plot(GPSsignal(1:
500));
title('调制后数据');
C/A码产生的子程序CAgenerate:
functioncacode=CAgenerate(number)
if(number<1)|(number>37)
disp('输入参数必须在1~37之间取值');
return
end
CACode=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;]
%生成一个周期的伪码序列
form=1:
1023
CACode(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)];
end
cacode=CACode;
2、C/A码的相关性分析
clc;
n=input('请输入卫星PRN号码:
n=');
cacode1=CAgenerate(n);
%在G2序列中找出-1并转换为0,找出1并转换为1
ind1=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);
fori=0:
N-1
fork=i+1:
N-1
z1(k)=cacode1(k)*cacode1(k-i);
z(i+1)=z(i+1)+z1(k);
end
z(i+1)=z(i+1)/N;
end
subplot(2,1,1);
plot(z);
title('自相关特性');
axis([-501300-0.51.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);
fori=0:
N-1
fork=i+1:
N-1
h1(k)=cacode1(k)*cacode2(k-i);
h(i+1)=h(i+1)+h1(k);
end
h(i+1)=h(i+1)/N;
end
subplot(2,1,2);
plot(h);
title('互相关特性');
axis([-501300-0.51]);
4、P码的产生及扩频调制
clc;
c=input('请输入数据码的长度:
c=');
y=rand(1,c);
fori=1:
c
ify(i)<0.5
datacode(i)=0;
else
datacode(i)=1;
end
end
x
(1)=0;
show
(1)=datacode
(1);
p=2;
fori=1:
c
forj=1:
100
x(p)=i-1+j*0.01;
show(p)=datacode(i);
p=p+1;
end
end
subplot(4,1,1);
plot(x,show);
title('数据码');
axis([0c-0.21.2]);
NumberPCode=input('entertheNumberPcode=');
NumberShift=input('entertheNumberShift=');
a=input('entera=');
pcode=Pcode(a,NumberPCode,NumberShift);
x
(1)=0;
show
(1)=pcode
(1);
p=2;
fori=1:
length(pcode)
forj=1:
100
x(p)=i-1+j*0.01;
show(p)=pcode(i);
p=p+1;
end
end
subplot(4,1,2);
plot(x,show);
title('P码');
axis([0length(pcode)-0.21.2]);
pcode=pcode(1:
10);
fori=1:
c
ifdatacode(i)==1
datacodek((i-1)*50+1:
i*50)=ones(1,50);
else
datacodek((i-1)*50+1:
i*50)=zeros(1,50);
end
end
fori=1:
c
forj=1:
50
addr=rem(((i-1)*50+j),10);
ifaddr==0
addr=10;
end
kuopindata((i-1)*50+j)=xor(datacodek((i-1)*50+j),pcode(addr));
end
end
x
(1)=0;
show
(1)=kuopindata
(1);
p=2;
%下面的循环是为了将结果显示成方波形式
fori=1:
length(kuopindata)
forj=1:
100
x(p)=i-1+j*0.01;
show(p)=kuopindata(i);
p=p+1;
end
end
subplot(4,1,3);
plot(x,show);
title('扩频数据');
axis([0length(kuopindata)-0.21.2]);
%每位数据通过正弦波来调制
Sinwave=sin([0:
2*pi/8:
2*pi*7/8]);
Sinwave=single(Sinwave);
GPSsignal=zeros(1,1);
Sinwave=[SinwaveSinwaveSinwaveSinwaveSinwave];
fo
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 MATLAB GPS 信号 仿真 完整 源代码 123 doc