Единое окно доступа к образовательным ресурсам

Спутниковые системы навигации: Лабораторный практикум на компьютере

Голосов: 113

Приводится лабораторный практикум по вопросам спутниковых радионавигационных систем в виде открытых программных комплексов в среде MatLab. Лабораторный практикум в виде 16 работ с заданиями, примерами и контрольными вопросами охватывает направления формирования сигналов спутниковых навигационных систем GPS и ГЛОНАСС, преобразования координат, моделирование орбит навигационных спутников GPS, ГЛОНАСС, GALILEO, декодирования и расшифровка данных навигационных спутников, решение навигационной задачи расчета позиции приемника пользователя. Для студентов, аспирантов и преподавателей дисциплин, изучающих системы и компоненты спутниковых средств навигации.

Приведенный ниже текст получен путем автоматического извлечения из оригинального PDF-документа и предназначен для предварительного просмотра.
Изображения (картинки, формулы, графики) отсутствуют.
                                      Рис. 1.3. Результат моделирования схемы рис. 1.1

      Символы [11101] в сигнальной форме представлены на верхнем графике рис.3 и со-
ответствуют данным, передаваемым по каналу 1 (рис. 1.1). Средний график рис. 1.3 есть
результат выполнения алгоритма (1 .7) и соответствует данным, сформированным в кана-
ле 2 (рис. 1.1). Нижний график (рис. 1.3) есть результат применения алгоритма (1. 8)- вос-
становление данных и соответствует данным, сформированным в канале 3 (рис. 1.1).
6. Выполните моделирование преобразований по алгоритмам (1 .7, 1. 8) в MatLab.
7. Откройте MatLab и выполните задания 4, 5, 6.
8.   Задание 4. Создайте следующий m- файл.
     Процедура перекодировки по алгоритмам (1 .7) и (1. 8) в виде m- файла
      % m - файл процедура перекодировки
      %Алгоритм (1 .7)
      % входная последовательность
      a=[1 1 1 0 1];
      % выходная последовательность
      aout(1)=a(1);
      i = 1;
      for i = 2 : 5
         aout(i)=xor(a(i),aout(i-1));
      end
       aout %вывод выходной последовательности в командное окно
      % Алгоритм (1. 8)
      b(1) = aout(1);
      for i = 2 : 5


                                                     11


       b(i) = xor(aout(i-1), aout(i));
     end
     b %вывод обратного преобразования в командное окно
9. Задание 5. Выполните m- файл и убедитесь, что результат выполнения соответствует
   данным, изображенным в командном окне (рис. 1.2, г).
10. Задание 6. Задайте данные для преобразования в виде последовательности из 10 сим-
   волов. Для заданной последовательности выполните задания 1- 4. Результаты выпол-
   нения занесите в отчет

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

      1.3.1 Лабораторная работа 1. 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


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


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

     Функция cod_GPS (формирование псевдослучайного кода спутников GPS)

     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 согласно
     n = 20;
     %}
     %начальное состояние регистра сдвига
     shift_reg=-ones(1,10);
     for i=1:n
       g1(i)=shift_reg(10); %последовательность G1
       % сложение (заменено умножением) по модулю 2 третьего и 10 разрядов
       % регистра
       modulo2=shift_reg(3)*shift_reg(10);
       % сдвиг разрядов 1:9
       shift_reg(2:10)=shift_reg(1:9);
       % присвоение modulo2 первому разряду регистра
       shift_reg(1)=modulo2;
     end
     g1;

                                                   13


% генерация кода 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)*shift_reg(3)*shift_reg(6)*shift_reg(8)...
      *shift_reg(9)*shift_reg(10);
  % сдвиг разрядов 1:9
  shift_reg(2:10)=shift_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




                                                14


                       Рис. 1.4. Результат выполнения m- файла PR1_cod_GPS.m


Файл PR2_cod_GPS.m

clear
%Пример PR2_cod_GPS.m
%Расчет кодов любого или всех спутников
n=1023;
for Sv_id=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 спутников
%{
Результаты выполнения примера, скопированные из командного окна
cod1 =

   1    -1   -1   -1 1 1 -1 1 -1          1      1    -1       1     1     -1     -1    -1     -1      1     1     -1
   1    -1   -1   -1 1 1 1 1 1          -1     -1     -1      -1     -1      1     -1     1     1     -1    -1       1
   1    -1   -1   -1 1 1 1 -1 1           1     1      1     -1      1     -1      1     1    -1      1     1     -1
   1    -1   -1   -1 1 1 1 -1 -1          1     -1     -1      1      1      1    -1    -1     -1     -1    -1       1
  -1     1    1    1 -1 1 1 1 -1        -1      1     -1     -1       1     1      1    -1     1     -1     1     -1
  -1     1    1    1 -1 -1 1 -1 1       -1       1    -1     -1       1     1      1    -1      1     1     1      1
  -1    -1   -1   -1 -1 -1 -1 -1 -1        1     -1      1      1     -1      1     1    -1     -1      1    -1      1
   1     1   -1   -1 1 -1 -1 1 -1        -1     -1      1      1     -1     -1      1    -1     1     -1    -1      -1
   1    -1    1   -1 1 1 -1 1 1         -1       1     1      1     -1     -1     -1    -1      1      1    1     -1
   1    -1    1   -1 1 1 1 -1 1          1     -1     -1     -1       1     1      1     1    -1     -1     1     -1
   1    -1   -1    1 1 1 1 -1 -1         1     -1      1     -1       1     1      1    -1    -1     -1     1       1
   1     1   -1   -1 1 -1 1 -1 -1       -1       1      1      1    -1       1     1    -1      1      1    1      1

                                                  15


   1 -1 1 -1 1 1 -1              -1      -1     -1    1     -1 1     -1     -1 1      -1      1     1     -1        1
   1 -1 -1 1 1 1 1                1     -1     -1     1    -1 -1    -1     -1 -1      -1      1     1     -1      -1
  -1 -1 -1 -1 -1 1 1             -1        1    -1    1     -1 -1     1     -1 -1      1      1     1     -1      -1
   1 1 -1 -1 1 -1 1              -1      -1      1    1    -1 -1      1      1 -1     1     -1     1      -1      -1
   1 1 1 1 1 1 1                 1     -1      1     1     1 -1     1      1 -1     -1     -1     -1     -1      -1
  -1 -1 1 1 -1 1 1               -1       1    -1    -1    -1 1       1      1 1      1      1    -1      1      -1
  -1 1 -1 1 -1 -1 1              -1      -1      1    1      1 -1   -1       1 1     -1     -1      1      1       1
  -1 1 1 -1 -1 -1 -1             -1       -1    -1    -1     -1 1      1     -1 1     -1      1     -1      -1      1
   1 1 1 1 1 -1 -1                1     -1     -1     1     1 -1    -1      1 -1     -1      1     1       1     -1
  -1 -1 1 1 -1 1 -1               1       1    -1     1    -1 1      1     -1 1       1     1      1     -1       1
  -1 -1 -1 1 -1 -1 -1             -1       1     1    1      1 1    -1      -1 1       1    -1     -1      -1      -1


cod2 =

   0     0   0   0   1   1   1   0     0       0     0     0   0    0      1   0    0      1      1      1       0      1   1
   1     1   1   1   0   0   1   0     1       1     1     0   1    1      1   0    0      1      0      0       0      1   1
   1     1   1   1   0   0   1   1     0       0     1     1   0    1      1   1    0      0      1      0       0      0   1
   1     1   1   1   0   0   1   1     1       1     0     1   1    0      1   1    0      0      0      1       0      0   0
   0     0   0   0   1   1   1   0     0       0     0     0   0    0      1   0    0      1      1      1       0      1   1
   0     0   0   0   0   1   1   1     0       0     0     1   0    0      0   1    0      0      1      1       1      0   1
   1     0   0   0   0   0   1   1     1       0     0     0   1    0      0   0    0      0      0      1       1      1   1
   0     0   1   1   0   1   1   0     0       1     1     1   1    0      1   1    0      1      1      1       0      0   1
   1     0   0   1   1   0   1   1     0       0     1     1   1    1      0   1    1      0      1      1       1      0   0
   0     1   0   0   1   1   0   1     1       0     0     1   1    1      1   0    0      1      0      1       1      1   0
   0     1   0   1   0   0   1   1     0       1     1     0   0    0      0   0    0      1      0      1       0      0   0
   1     1   0   1   1   1   0   0     0       1     0     0   1    1      1   1    0      1      0      1       0      1   0
   0     1   1   0   1   1   0   0     0       1     1     0   0    1      1   1    1      0      1      0       1      0   0
   0     1   0   0   0   0   1   1     1       0     0     1   1    1      0   0    0      0      1      0       1      0   1
   1     0   1   0   0   0   0   1     1       0     0     0   1    1      1   0    0      0      0      1       0      1   1
   1     1   0   1   0   0   0   0     1       0     0     0   0    1      1   1    1      0      0      0       1      0   0
   1     0   0   1   1   1   1   1     1       0     1     1   1    1      0   0    1      0      1      1       1      0   0
   1     0   1   1   0   0   1   0     0       1     1     0   0    0      0   1    1      0      1      0       0      0   1
   0     1   0   1   1   0   0   1     0       1     1     0   0    0      0   0    1      1      0      1       0      0   1
   0     1   0   1   0   0   1   1     0       0     0     0   1    1      1   1    1      0      0      1       0      1   1
   1     0   1   0   1   0   0   1     1       1     0     0   0    1      1   1    1      1      0      0       1      0   1


ans =


1440
1620
1710
1744
1133
%{


Файл 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);

                                                         16


          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
          Графическое изображение 30 первых символов кода спутника GPS приведено на рис.
1.5.
                                                                    1
 1
                                                                   0.8

0.8                                                                0.6

                                                                   0.4

0.6                                                                0.2

                                                                    0

0.4                                                               -0.2

                                                                  -0.4
0.2
                                                                  -0.6

                                                                  -0.8
 0
                                                                   -1
      0          5    10         15          20      25      30          0   5   10          15           20   25   30
                     Код GPS в двоичных символах                                 Код GPS в символах "1","-1"

                                                   Рис. 1.5. Код спутника 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);%код

                                                              17


          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
              Результат выполнения файла изображен на рис. 1.6.


         1                                                             1


       0.8                                                           0.8


       0.6                                                           0.6


       0.4                                                           0.4


       0.2                                                           0.2


         0                                                             0


       -0.2                                                          -0.2


       -0.4                                                          -0.4


       -0.6                                                          -0.6


       -0.8                                                          -0.8


        -1                                                            -1

              0    5    10      15     20      25      30                   0   10   20   30   40   50   60
                                a                                                         b

  Рис. 1.6.Тридцать символов кода спутника GPS № 3: а - без дискретизации, б - частота дискретизации 2

         Файл 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;%символьная скорость

                                                            18


     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
Результат выполнения файла изображен на рис. 1.7.

                                                              150

   1023


                                                              100


    800

                                                               50


    600


                                                                0


    400

                                                               -50


    200

                                                              -100


     0


                                                              -150
          0    1000       2000      3000       4000                  0   500   1000   1500   2000
                            a                                                   б


    Рис. 1.7. Автокорреляционная функция кода GPS: а - автокорреляция кода сигнала спутника № 4;
                            б - боковые лепестки функции автокорреляции




                                                      19


Файл 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(Sv_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
 Результат выполнения файла изображен на рис. 1.8.




                                                 20



    
Яндекс цитирования Яндекс.Метрика