ФайлPr8_CodGPS.m моделирует ситуацию, когда в зоне видимости находятся спутники,
изображенные на рис. 6. 9. Спутники, данные которых обрабатывает приемник, имеют
номера2, 4, 5, 9,14, 17, 24, 30. Спутник26 «не видим» приемником. Результаты выполнения m- файла изображены на рис. 1.10.
Файл Pr8_cod_GPS.m
clear
%Имя файла:Pr8_CodGPS.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
Cod9 = cod(9,:);
col_7(37,:);
Cod26 =cod(26,:);
M_P=cod_bin(37,:);
% Сумма кодов видимых спутников 2, 4, 5, 9,14, 17, 24, 30
Cod_Sym= cod(2,:)+cod(4,:)+cod(5,:)+cod(9,:)+cod(14,:)+...
cod(17,:)+cod(24,:)+cod(30,:);
%Дискретизация
Fd=1.023*10^6;%символьная скорость
FsFd=2;% отношение частоты дискретизации к символьной скорости
Fs=Fd*FsFd;% частота дискретизации
t=(0:length(Cod9)*FsFd-1)/Fs;% дискретное время
F_mod26 = (1/sqrt(FsFd))*Cod26(floor(Fd*t)+1);%код спутника 26, находящегося вне зоны видимости
F_mod9 = (1/sqrt(FsFd))*Cod9(floor(Fd*t)+1);%код
% сумма кодов 8 спутников 2, 4, 5, 9,14, 17, 24, 30
Sym_Cod = (1/sqrt(FsFd))*Cod_Sym(floor(Fd*t)+1);
%k=0;%сдвиг кода
m=n*FsFd;
nn=1023*FsFd;;
A_26=F_mod26(1:m);%код GPS
A_9=F_mod9(1:m);%код GPS
Cor_Sym = xcorr(Sym_Cod,nn);%автокорреляция сумма кодов 8 спутников
Cor_26_Sym = xcorr(Sym_Cod,A_26,nn);%взаимная корреляция
Cor_9_Sym = xcorr(Sym_Cod,A_9,nn);%взаимная корреляция
%Графика сигналов
subplot(4,1,1), plot(Sym_Cod),axis([ 0 2100 -10 10])
xlabel('а','FontSize',12,'FontName','TimesNewRoman')
grid on
subplot(4,1,2), plot(Cor_Sym),axis([ 0 2*nn -1000 10000])
xlabel('б','FontSize',12, 'FontName','TimesNewRoman')
grid on
subplot(4,1,3), plot(Cor_26_Sym),axis([ 0 2*nn -400 400])
xlabel('в','FontSize',12, 'FontName','TimesNewRoman')
grid on
subplot(4,1,4), plot(Cor_9_Sym),axis([ 0 2*nn -100 1100])
xlabel('г','FontSize',12, 'FontName','TimesNewRoman')
grid on
Пример m- файла для исследования корреляционных свойств сигнала с шумом и копии сигнала. В файле в качестве источника шума использована функция MatLab «randn». Программа иллюстрирует качественную картину влияния шума на взаимную корреляцию сигнала с шумом и копии сигнала. Для получения количественных значений в m- файл следует подставить конкретные значения соотношения сигнал/шум.
Файл Pr9_cod_GPS.m
clear
%Имя файла:Pr09_CodGPS.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
Cod37 = cod(37,:);
col_7(37,:);
Noise=0;%коэффициент усиления генератора шума
Noise1= Noise*(randn(n,1))';%генерация шума
Noise2= 4*(randn(n,1))';%генерация шума
Noise5= 8*(randn(n,1))';%генерация шума
Noise10=12*(randn(n,1))';%генерация шума
%Дискретизация
Fd=1.023*10^6;%символьная скорость
FsFd=2;% отношение частоты дискретизации к символьной скорости
Fs=Fd*FsFd;% частота дискретизации
t=(0:length(Cod37)*FsFd-1)/Fs;% дискретное время
Cod37 = (1/sqrt(FsFd))*Cod37(floor(Fd*t)+1);%код
Noise_mod=(1/sqrt(FsFd))*Noise1(floor(Fd*t)+1);%шум
Noise_mod2=(1/sqrt(FsFd))*Noise2(floor(Fd*t)+1);%шум
Noise_mod5=(1/sqrt(FsFd))*Noise5(floor(Fd*t)+1);%шум
Noise_mod10=(1/sqrt(FsFd))*Noise10(floor(Fd*t)+1);%шум
%Noise_mod=(1/sqrt(FsFd))*Noise1(floor(Fd*t)+1);%шум
%Noise_mod=(1/sqrt(FsFd))*Noise1(floor(Fd*t)+1);%шум
Cod37Noise = Cod37 +Noise_mod;% код плюс шум
Cod37Noise2 = Cod37 +Noise_mod2;% код плюс шум
Cod37Noise5 = Cod37 +Noise_mod5;% код плюс шум
Cod37Noise10 = Cod37 +Noise_mod10;% код плюс шум
m=n*FsFd;
nn=1023*FsFd;;
Cod37Noise = Cod37Noise(1:m);%код GPS+ шум
Cod37Noise2= Cod37Noise2(1:m);%код GPS+ шум
Cod37Noise5= Cod37Noise5(1:m);%код GPS+ шум
Cod37Noise10= Cod37Noise10(1:m);%код GPS+ шум
Cod37=Cod37(1:m);%код GPS
Cor_Cod37_Noise = xcorr(Cod37,Cod37Noise,nn);%взаимная корреляция копии кода GPS и сигнала с шумом
Cor_Cod37_Noise2 = xcorr(Cod37,Cod37Noise2,nn);%взаимная корреляция копии кода GPS и сигнала с шумом
Cor_Cod37_Noise5 = xcorr(Cod37,Cod37Noise5,nn);%взаимная корреляция копии кода GPS и сигнала с шумом
Cor_Cod37_Noise10 = xcorr(Cod37,Cod37Noise10,nn);%взаимная корреляция кода GPS и шума
%Графика
subplot(4,1,1),stem(Cor_Cod37_Noise), axis([1500 2500 -100 1200])
xlabel('а','FontSize',12,'FontName', 'TimesNewRoman')
grid on
subplot(4,1,2),stem(Cor_Cod37_Noise2),axis([ 1500 2500 -100 1300])
xlabel('б','FontSize',12,'FontName','TimesNewRoman')
grid on
subplot(4,1,3),stem(Cor_Cod37_Noise5),axis([ 1500 2500 -100 1300])
xlabel('в','FontSize',12,'FontName','TimesNewRoman')
grid on
subplot(4,1,4),stem(Cor_Cod37_Noise10),axis([ 1500 2500 -100 1300])
xlabel('г','FontSize',12,'FontName','TimesNewRoman')
grid on
Комплексная программа обработки псевдослучайных кодов спутников GPS.
Приведенный ниже m-файл позволяет одновременно выполнить все процедуры обработки
псевдослучайных кодов спутников GPS, рассмотренные в предыдущих примерах.
Файл PrCodGPS.m
clear
%Имя файла:PrCodGPS.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
Cod37 = cod(37,:);
col_7(37,:);
Cod37;
Cod13 =cod(13,:);
M_P=cod_bin(37,:);
Cod_Sym= cod(1,:)+cod(4,:)+cod(7,:)+cod(11,:)+cod(13,:)+cod(14,:)+...
cod(20,:)+cod(21,:)+cod(23,:)+cod(25,:)+cod(31,:);
Noise=1;%коэффициент усиления генератора шума
Noise1= Noise*(randn(2*n,1))';%генерация шума
%для просмотра результатов выполнения программы убрать символ ";"
%Дискретизация
Fd=1.023*10^6;%символьная скорость
FsFd=2;% отношение частоты дискретизации к символьной скорости
Fs=Fd*FsFd;% частота дискретизации
t=(0:length(Cod37)*FsFd-1)/Fs;% дискретное время
Noise_mod=(1/sqrt(FsFd))*Noise1(floor(Fd*t)+1);
F_mod = (1/sqrt(FsFd))*Cod37(floor(Fd*t)+1)+Noise_mod;% код плюс шум
F_mod1 = (1/sqrt(FsFd))*Cod37(floor(Fd*t)+1);%код
F_mod2 = (1/sqrt(FsFd))*Cod37(floor(Fd*t)+1);%код
F_mod3 = (1/sqrt(FsFd))*Cod13(floor(Fd*t)+1);%код
% сумма кодов 11 спутников 1,4,7,11,13,14,20,21,23,25,31
Sym_Cod = (1/sqrt(FsFd))*Cod_Sym(floor(Fd*t)+1);
k=0;%сдвиг кода
m=n*FsFd;
nn=1023*FsFd;;
A_0 = F_mod(1:m);%код GPS+ шум
A_1 = F_mod1(1+k:m+k);% сдвинутый код
A_2=F_mod1(1:m);%код GPS
A_3=F_mod3(1:m);%код GPS
Cor = xcorr(A_2,Noise_mod,nn);%взаимная корреляция кода GPS и шума
CorA0 = xcorr(A_0,nn);%автокорреляция кода GPS и шума
[CorA1,lags] = xcorr(A_1,nn);%автокорреляция сдвинутого код
Cor_R = xcorr(Noise_mod,nn);%автокорреляция шума
[CorA2,lags]=xcorr(A_2,nn);%автокорреляция кода GPS
Cor_GRG = xcorr(A_0,A_1,nn);%взаимная корреляция кода GPS+ шум и
%сдвинутого кода
Cor_13_37 = xcorr(A_2,A_3,nn);%взаимная корреляция кода 13 и 37
Cor_Sym = xcorr(Sym_Cod,nn);%автокорреляция сумма кодов 11 спутников
Cor_13_Sym = xcorr(Sym_Cod,A_3,nn);%взаимная корреляция суммы кодов 11 спутников и кода
спутника 13
%Графика сигналов
%%%%%%%%%%%%%%%%%%%%%%%%%
fig1=figure;
subplot(4,1,1),plot(M_P), axis([ 0 1100 -0.1 1.1])
xlabel ('Код GPS в двоичных символах','FontSize',12,...
'FontName','TimesNewRoman')
grid on
subplot(4,1,2), plot(Cod37),axis([ 0 1100 -1.1 1.1])
xlabel('Код GPS в символах "1","-1"','FontSize',12,...
'FontName','TimesNewRoman')
grid on
subplot(4,1,3),plot(Noise_mod),axis([ 0 2*n -3 3])
xlabel('Псевдослучайный шум','FontSize',12,'FontName','TimesNewRoman')
grid on
subplot(4,1,4),plot(A_0),axis([ 0 2*n -5 5])
xlabel('Код GPS плюс шум','FontSize',12,'FontName','TimesNewRoman')
grid on
%Графика обработки сигналов
figure(fig1);
fig2=figure;
subplot(4,1,1),plot(CorA2), axis([ 0 2*nn -100 1100])
xlabel('Автокорреляционная функция кода GPS','FontSize',12,...
'FontName','TimesNewRoman')
grid on
subplot(4,1,2), plot(lags,CorA2), axis([ 0 nn -150 150])
xlabel ('Боковые лепестки автокорреляционной функции кода GPS',...
'FontSize',12,'FontName','TimesNewRoman')
grid on
subplot(4,1,3),plot(Cor_R), axis([ 0 2*nn -100 1100])
xlabel('Автокорреляционная функция шума','FontSize',12,'FontName',...
'TimesNewRoman')
grid on
subplot(4,1,4),plot(Cor_R),axis([ 0 nn -150 150])
xlabel ('Боковые лепестки автокорреляционной функции шумa','FontSize',...
12,'FontName','TimesNewRoman')
grid on
fig3=figure;
subplot(4,1,1),plot(Cor),axis([ 0 2*nn -150 150])
xlabel('Взаимная корреляция кода GPS и шума','FontSize',...
12,'FontName','TimesNewRoman')
grid on
subplot(4,1,2),plot(CorA0),axis([ 0 2*nn -100 2500])
xlabel('Автокорреляционная функция кода GPS плюс шум','FontSize',...
12,'FontName','TimesNewRoman')
grid on
subplot(4,1,3),plot(Cor_GRG),axis([ 0 2*nn -100 1100])
xlabel ('Взаимная корреляция кода GPS плюс шум и копии кода GPS ',...
'FontSize',12,'FontName','TimesNewRoman')
grid on
subplot(4,1,4),plot(Cor_GRG),axis([ 0 2*n -200 200])
xlabel ('Взаимная корреляция кода GPS плюс шум и копии кода GPS ',...
'FontSize',12,'FontName','TimesNewRoman')
grid on
fig4=figure;
subplot(4,1,1), plot(Sym_Cod),axis([ 0 2*n -10 10])
xlabel('Сумма кодов 11 спутников','FontSize',12,'FontName','TimesNewRoman')
grid on
subplot(4,1,2), plot(Cor_Sym),axis([ 0 2*nn -1000 2500])
xlabel ('Автокорреляция суммы кодов 11 спутников','FontSize',12,...
'FontName','TimesNewRoman')
grid on
subplot(4,1,3), plot(Cor_13_Sym),axis([ 0 2*nn -100 1500])
xlabel ('Взаимная корреляция суммы кодов 11 спутников и кода 13',...
'FontSize',12,'FontName','TimesNewRoman')
grid on
subplot(4,1,4), plot(Cor_13_Sym),axis([ 0 2*n -500 600])
xlabel ('Боковые лепестки взаимной корреляции суммы кодов 11 спутников и кода 13',...
'FontSize',12,'FontName','TimesNewRoman')
grid on
fig5=figure;
plot(Cor_13_37),axis([ 0 2*nn -100 100])
xlabel('Взаимная корреляция кода GPS (коды 13и 37) ',...
'FontSize',12,'FontName','TimesNewRoman')
grid on
Графические результаты выполнения m- файла PrCodGPS.m изображены на
рис. 1.13 - 1.17.
Контрольные вопросы:
1. Как формируется псевдослучайный код спутников GPS?
2. Опишите радиочастотные характеристики спутников GPS?