Псевдослучайный код спутников GPS




Лабораторная работа № 2

Код спутников GPS

Цель работы: формирование и исследование псевдослучайного кода спутников GPS.

Порядок выполнения лабораторной работы:

1. Создайте папку cod_GPS_My и скопируйте в ее все программы из папки cod_GPS.

2. ЗапуститеMatLab, откройте функцию cod_GPS, изучите программные процедуры и комментарии, выполните задания1- 10.

3. Задание 1. Откройте файлPR1_cod_GPS.m, сгенерируйте код спутника, определите, что получили в командном окне и занесите ответы в отчет.

4. Задание 2. Откройте файлPR2_cod_GPS.m, сгенерируйте коды спутников, определите, что получили в командном окне и занесите ответы в отчет.

5. Задание 3. Откройте файл PR3_cod_GPS.m, сгенерируйте коды спутников, определите, что получили в командном окне и занесите ответы в отчет.

6. Задание 4. Откройте файл PR4_cod_GPS.m, сгенерируйте коды спутников, определите, что получили в командном окне и занесите ответы в отчет.

7. Задание 5. Откройте файл PR5_cod_GPS.m, сгенерируйте коды спутников, определите, что получили в командном окне и занесите ответы в отчет.

8. Задание 6. Откройте файл PR6_cod_GPS.m, сгенерируйте коды спутников, определите, что получили в командном окне и занесите ответы в отчет.

9. Задание 7. Откройте файл PR7_cod_GPS.m, сгенерируйте коды спутников, определите, что получили в командном окне и занесите ответы в отчет.

10. Задание 8. Откройте файл PR8_cod_GPS.m, сгенерируйте коды спутников, определите, что получили в командном окне и занесите ответы в отчет.

11. Задание 9. Откройте файл PR09_cod_GPS.m, сгенерируйте коды спутников, определите, что получили в командном окне и занесите ответы в отчет.

12. Задание 10. Откройте файл PrCodGPS.m, сгенерируйте коды спутников, определите, что получили в командном окне и занесите ответы в отчет.

Функции и файлы из папки cod_GPS

Программа cod_GPS.m

function [cod, cod_bin,column_7,n]=cod_GPS(Sv_id,n);

%{

Имя: cod_GPS

Функция предназначена для генерации псевдослучайного кода

любого спутника GPS генерация 37 С/А кодов

Sv_id - номер спутника

cod - вектор, содержащий выходную последовательность

g2s - вектор, содержащий соответствующее значения сдвига кода g2 для

получения кода С/А требуемого спутника (например,

для Sv_id=25 – используется сдвиг =513)

n- количество символов в последовательности

%}

%сдвиг кода в соответствии с ICD-GPS-200C для 37 значений

g2s=[5;6;7;8;17;18;139;140;141;251;252;254;255;256;257;258;...

469;470;471;472;473;474; 509;512;513;514;515;516;859;...

860;861;862;863;950;947;948;950];

g2shift=g2s(Sv_id);

%{

генерация последовательности G1 cогласно

n = 20;

%}

%начальное состояние регистра сдвига

shift_reg=-ones(1,10);

for i=1:n

g1(i)=shift_reg(10); %последовательность G1

% сложение (заменено умножением по модулю 2 третьего и десятого разрядов

% регистра

modulo2=shift_reg(3)* shift_reg(10);

% сдвиг разрядов 1:9

shift_reg(2:10)=shift_reg(1:9);

% присвоение modulo2 первому разряду регистра

shift_reg(1)=modulo2;

end

g1;

% генерация кода G2 согласно

% начальное состояние регистра сдвига

shift_reg=-ones(1,10);

for i=1:n

g2(i)=shift_reg(10); %последовательность G2

% сложение (заменено умножением по модулю 2 второго,3,6,8,9,10

% разрядов регистра

modulo2=shift_reg(2)*shif_reg(3)*shift_reg(6)*shift_reg(8)...

*shift_reg(9)*shift_reg(10);

% сдвиг разрядов 1:9

shift_reg(2:10)=shif_reg(1:9);

% присвоение modulo2 первому разряду регистра

shift_reg(1)=modulo2;

end

g2;

[G1_G2] = [g1; g2]';

% сдвиг G2 на соответствующее номеру спутника число бит

g2tmp(1:g2shift)=g2(n-g2shift+1:n);

g2tmp(g2shift+1:n)=g2(1:n-g2shift);

%Сохранение сдвинутого кода

g2=g2tmp;

% формирование С/А кода поразрядным умножением G1 и G2

cod=g1.*g2;

%формирование кода спутника GPS в двоичных символах

cod_bin=-(cod-1)/2;

% формирование контрольного числа согласно в соответствии с ICD-GPS-200C

str=sprintf('%d',cod_bin(1:10));

column_7=dec2base(bin2dec(str),8,4);

Примеры применения функции cod_GPS.

Файл PR1_cod_GPS.m

%Пример PR1_cod_GPS.m

%Входные данные

Sv_id=2;% номер спутника

n=1023;% количество символов

[cod, cod_bin,column_7,n]=cod_GPS(Sv_id,n);

% Выходные данные

cod= cod(1:11) % 11 символов

cod_bin=cod_bin(1:11) % 11 символов в бинарном виде (0 и 1)

column_7% восьмеричное число первых 10 символов спутника № 2

 

 

 

ФайлPR2_cod_GPS.m

clear

%Пример PR2_cod_GPS.m

%Расчет кодов любого или всех спутников

n=1023;

d=1:37;

for Sv_i d=1:37

[cod(Sv_id,:),cod_bin(Sv_id,:),col_7(Sv_id,:),n]=cod_GPS(Sv_id,n);

end

cod1=cod(1:23,10:30) %вывод в командное окно кодов 23 спутников в символах +1 и -1

cod2=cod_bin(1:23,10:30)' %вывод в командное окно кодов 23 спутников в символах 1 и 0

col_7(1:5,:) % вывод в командное окно восьмеричных значений кодов 1...5 спутников

ФайлPr3_cod_GPS.m

clear

%Пример Pr3_cod_GPS

%Визуализация кода GPS

n=1023;

for Sv_id=1:37

[cod(Sv_id,:),cod_bin(Sv_id,:),column_7,n]=cod_GPS(Sv_id,n);

col_7(Sv_id,:)= column_7;

end

M_P= cod_bin(2,1:30);

M_P1=cod(2,1:30);

stem(M_P), axis([ 0 30 -0.1 1.1])

xlabel('Код GPS в двоичных символах','FontName','Times New Roman ','FontSize',12)

grid

figure

stem(M_P1),axis([ 0 30 -1.1 1.1])

xlabel ('Код GPS в символах "1","-1"','FontName','Times New Roman ','FontSize',12)

grid

Рис. 1.5. Графическое изображение 30 перевых символов кода спутника GPS

Файл Pr4_cod_GPS.m

clear

%Пример Pr4_cod_GPS.m

%Дискретизация кода спутника GPS

n=1023;

for Sv_id=1:37

[cod(Sv_id,:),cod_bin(Sv_id,:),column_7,n]=cod_GPS(Sv_id,n);

col_7(Sv_id,:)= column_7;

end

Cod3 = cod(3,:);

%Дискретизация

Fd=1.023*10^6;%символьная скорость

FsFd=2;% отношение частоты дискретизации к символьной скорости

Fs=Fd*FsFd;% частота дискретизации

t=(0:length(Cod3)*FsFd-1)/Fs;% дискретное время

F_mod1 = Cod3(floor(Fd*t)+1);%код

A_2=F_mod1(1:n);%код GPS

subplot(1,2,1), stem(cod(3,1:30)),axis([ 0 30 -1.1 1.1])

xlabel('a', 'FontSize',12, 'FontName','TimesNewRoman')

grid

subplot(1,2,2), stem(A_2(1:60)),axis([ 0 60 -1.1 1.1])

xlabel('b','FontSize',12,'FontName','TimesNewRoman')

grid

 

Результат выполнения файла:

Файл Pr5_cod_GPS.m

clear

%Имя файла:Pr5_cod_GPS.m

%Автокорреляционная функция кода GPS

n=1023;

for Sv_id=1:37

[cod(Sv_id,:),cod_bin(Sv_id,:),column_7,n]=cod_GPS (Sv_id,n);

col_7(Sv_id,:)= column_7;

end

Cod4 = cod(4,:);

%Дискретизация

Fd=1.023*10^6;%символьная скорость

FsFd=2;% отношение частоты дискретизации к символьной скорости

Fs=Fd*FsFd;% частота дискретизации

t=(0:length(Cod4)*FsFd-1)/Fs;% дискретное время

F_mod1 = (1/sqrt(FsFd))*Cod4(floor(Fd*t)+1);%код

m=n*FsFd;

nn=1023*FsFd;

A_2=F_mod1(1:m);%код GPS

[CorA2,lags]=xcorr(A_2,nn);%автокорреляция кода GPS

%Графика сигналов

subplot(1,2,1),plot(CorA2), axis([ 0 2*nn -100 1100])

xlabel('a','FontSize',12, 'FontName','TimesNewRoman')

grid on

subplot(1,2,2), plot(CorA2), axis([ 0 nn -150 150])

xlabel('б', 'FontSize',12,'FontName','TimesNewRoman')

grid on

Файл Pr6_cod_GPS.m

clear

%Имя файла:Pr6_cod_GPS.m

%Взаимная корреляция кодов спутников GPS

n=1023;

for Sv_id=1:37

[cod(Sv_id,:),cod_bin(Sv_id,:),column_7,n] =cod_GPS(S v_id,n);

col_7(Sv_id,:)= column_7;

end

Cod24 = cod (24,:);

Cod13 =cod(13,:);

%Дискретизация

Fd=1.023*10^6;%символьная скорость

FsFd=2;% отношение частоты дискретизации к символьной скорости

Fs=Fd*FsFd;% частота дискретизации

t=(0:length(Cod24)*FsFd -1)/Fs;% дискретное время

F_mod1 = (1/sqrt(FsFd))*Cod24(floor(Fd*t)+1);%код

F_mod3 = (1/sqrt(FsFd))*Cod13(floor(Fd*t)+1);%код

m=n;

m=n*FsFd;

nn=1023*FsFd

A_2=F_ mod1(1:m);%код GPS

A_3=F_ mod3(1:m);%код GPS

Cor_13_24 = xcorr(A_2,A_3,nn);%взаимная корреляция кода 13 и 24

Cor_13_24_1 = xcorr(A_2(1:1023),A_3(1:1023),nn/2);

%Графика сигналов

subplot(1, 2, 1), plot(Cor_13_24),axis([ 0 2*nn -100 100])

xlabel('a ','FontSize',12,'FontName','TimesNewRoman')

grid on

subplot(1, 2, 2), plot(Cor_13_24_1),axis([0 nn -100 100])

xlabel('б ','FontSize',12,'FontName','TimesNewRoman')

grid on

 

Результат выполнения Файла Pr6_cod_GPS.m:

Файл Pr7_cod_GPS.m

 

clear

%Имя файла:Pr7_cod_GPS.m

%Взаимная корреляция кода и копии кода спутников GPS

n=1024*2;

for Sv_id=1:37

[cod(Sv_id,:),cod_bin(Sv_id,:),column_7,n]=cod_GPS(Sv_id,n);

col_7(Sv_id,:)= column_7;

end

Cod24 = cod(24,:);

%Дискретизация

Fd=1.023*10^6;%символьная скорость

FsFd=2;% отношение частоты дискретизации к символьной скорости

Fs=Fd*FsFd;% частота дискретизации

t=(0:length(Cod24)*FsFd-1)/Fs;% дискретное время

F_mod1 = (1/sqrt(FsFd))*Cod24(floor(Fd*t)+1);%код

m=n*FsFd;

nn=1023*FsFd;

A_2=F_mod1(1:m);%код GPS

Cor_24 = xcorr(A_2(500:2546),nn);%автокорреляция кода спутника

Cor_24_24_2 = xcorr(A_2(500:2546),A_2(500:2546),nn);%автокорреляция кода спутника с точной копией

Cor_24_24 = xcorr(A_2(498:2540),A_2(500:2546),nn);%взаимная корреляция кода с задержанной на 2 отсчета копией кода

Cor_24_24_1 = xcorr(A_2(502:2548),A_2(500:2536),nn);%взаимная корреляция кода с опережающей на

2 отсчета копией кода

%Графика сигналов

subplot(4, 1, 1), stem(Cor_24_24),axis([ 2040 2055 -100 1100])

xlabel('a ','FontSize',12,'FontName','TimesNewRoman')

grid on

subplot(4, 1, 2), stem(Cor_24),axis([ 2040 2055 -100 1100])

xlabel('б ','FontSize',12,'FontName','TimesNewRoman')

grid on

subplot(4,1,3), stem(Cor_24_24_2),axis([ 2040 2055 -100 1100])

xlabel('в ','FontSize',12,'FontName','TimesNewRoman')

grid on

subplot(4, 1, 4), stem(Cor_24_24_1),axis([2040 2055 -100 1100])

xlabel('г ','FontSize',12,'FontName','TimesNewRoman')

grid on



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-10-25 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: