Литература
1. Яценков В.С. Основы спутниковой навигации. – Москва: Горячая линия – Телеком, 2005.
2. Введение в GPS (Глобальная Навигационная Система). – Швейцария, Leica Geosystems AG, 2001.
3. Каи Бор Прикладный и численный гармонический анализ. Программируемый приемник GPS и GALILEO. Одночастотный подход. - Брикхаузер Бостон, 2007.
4. http://www.satlines.info/shop/firms/GPS.html.
5. Ж.Макс Методика и техника обработки сигналов при физических измерениях. – Москва: Мир, 1983.
6. М.В.Синьков Быстрая свертка на основе БПФ – Украина, Киев: Институт проблем регистрации информации НАН Украины, 2005.
7. Л.А.Мироновский, К.Ю. Петрова Введение в MATLAB – Санкт-Петербург, 2005.
8. А.А.Геннике, Г.Г Побединский Глобальные спутниковые системы определения местоположения и их применение в геодезии – Москва: Картгеоцентр, 2004.
9. Блейхут Р. Быстрые алгоритмы цифровой обработки сигналов – Москва: Мир, 1989.
Приложение а
Файл MyMain.m
% demCorGPS.m %
% Created on: 02:07:13
% Author: Melihova
% Editor: Boronin
% *********************
%
%%
clc;
clear all;
%% creating the constants %%
bitDuration = 20; %% длина бита
sfDuration = 300; %% длина подкадра
caLen = 1023; %% длительность СА кода %% standart length of CA - code in a form (I,Q)
periods = 10;
sample = 2; %% количество самплов на элемент СА кода %% the number of sampls for one bit
signal_length = sample*caLen*(periods + 1); %%
deltaT = 2*pi*10^(-3)/( sample * caLen ); %%
threshold = 3*10^4;
preambula = [1; -1; -1; -1; 1; -1; 1; 1];
tr = 0.75;
position = zeros(32,1);
sputnum = zeros(32,1);
dop = zeros(32,1);
ListCor = zeros(32,caLen*sample);
quality = zeros(32,10);
val = zeros(1,10);
data = zeros(2046,10);
coherency = 2; % 1 если складываем некогерентно, 2 - когерентно
%% creating the variables %%
signal = zeros(signal_length, 1); %% signal consists of in - fase "I" and quadrature - fase "Q"
res_dop = zeros(signal_length, 1); %% complex signal with dopler shifting
template = zeros(caLen*sample, 1);
%% reading the file %%
%bin = fopen('GpsSignal.sas');
bin = fopen('rawData.dat');
B = fread(bin, signal_length*2, 'int16');
fclose(bin);
%% doppler identification with the presizion 100 Hz
lim = 4e3; %% в герцах
precision = 10; %% в герцах
% преобразуем входной массив I и Q в комплексный сигнал
signal(:) = B(1:2:end) + 1i*B(2:2:end);
Visible_Sv_Count = 0;
for sv = 1:10
sv
rawDoppler = doppler_ident(signal, sv, sample, lim, precision);
phase = deltaT * rawDoppler(1, 1) * (0:signal_length-1);
res_dop(:, 1) = signal(:, 1).*exp(1i*phase).';
CA_sv = CAgen(sv);
for i = 1:sample
template(i:sample:end, 1) = CA_sv(:);
end
cor = Correlation( res_dop, template );
[pos, val, data] = searchSput(cor, tr, caLen, sample, coherency);
if pos ~= 0
Visible_Sv_Count = Visible_Sv_Count + 1;
position(Visible_Sv_Count) = pos;
sputnum(Visible_Sv_Count) = sv;
dop(Visible_Sv_Count) = rawDoppler(1,1); %% вернул назад в герцы
ListCor(1:caLen*sample,Visible_Sv_Count) = data(1:caLen*sample,1);
quality(Visible_Sv_Count,:) = val;
end
end
if Visible_Sv_Count > 0
sputnum = sputnum(1:Visible_Sv_Count);
position = position(1:Visible_Sv_Count);
ListCor = ListCor(1:caLen*sample,1:Visible_Sv_Count);
dop = dop(1:Visible_Sv_Count);
quality = quality(1:Visible_Sv_Count,1:10);
inf = [sputnum dop position];
disp('номера спутников | допплеровский сдвиг, Гц | позиция максимума');
inf
quality
D = ceil(sqrt(Visible_Sv_Count));
for i = 1:(Visible_Sv_Count)
figure (1);
subplot(D,ceil(Visible_Sv_Count/D),i);
plot(abs(ListCor(1:caLen*sample,i)));
xlabel(sputnum(i));
grid on;
figure (2);
subplot(D,ceil(Visible_Sv_Count/D),i);
plot(quality(i,:));
xlabel(sputnum(i));
grid on;
end
else
disp('Спутники не найдены');
end
