Файл: Учебное пособие ( Лабораторный практикум на компьютере ) Київ 2008 1.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 11.01.2024
Просмотров: 332
Скачиваний: 5
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
0 1000 2000 3000 4000
-100
-80
-60
-40
-20 0
20 40 60 80 100
a
0 500 1000 1500 2000
-100
-80
-60
-40
-20 0
20 40 60 80 100
б
Рис. 1.8.. Взаимная корреляция сигналов спутников № 13 и 24: а - на всем интервале одного периода кода; б-на половине интервала одного периода кода
Файл 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);%автокорреляция кода спутника
21
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
Результат выполнения файла изображен на рис. 1.9.
2040 2045 2050 2055 0
500 1000
a
2040 2045 2050 2055 0
500 1000
б
2040 2045 2050 2055 0
500 1000
в
2040 2045 2050 2055 0
500 1000
г
Рис. 1.9. Взаимная корреляция кода и копии кода сигнала спутников № 24: а - копия опережает код на 2 отсчета; б - автокорреляция кода сигнала; в - взаимная корреляция кода и ко- пии; в-копия отстает от кода сигнала на 2 отсчета
22
Пример m- файла для исследования корреляционных свойств суммы сигналов.
Файл Pr8_CodGPS.m моделирует ситуацию, когда в зоне видимости находятся спутники, изображенные на рис. 6. 9. Спутники, данные которых обрабатывает приемник, имеют номера 2, 4, 5, 9,14, 17, 24, 30. Спутник 26 «не видим» приемником. Результаты выполне- ния m- файла изображены на рис. 1.10.
Рис. 1.10. Видимые спутники GPS №№ 2, 4, 5, 9,14, 17, 24, 30
Файл 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;% частота дискретизации
23
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
24
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
24
0 200 400 600 800 1000 1200 1400 1600 1800 2000
-10 0
10
а
0 500 1000 1500 2000 2500 3000 3500 4000 0
5000 10000
б
0 500 1000 1500 2000 2500 3000 3500 4000
-400
-200 0
200 400
в
0 500 1000 1500 2000 2500 3000 3500 4000 0
500 1000
г
Рис. 1.11. Корреляционные характеристики сумм сигналов: а-сумма кодов 8 спутников; б-автокорреляция суммы кодов 8 спутников; в-корреляция суммы кодов 8 спутников и спутника 26; 'г-корреляция суммы кодов 8 спутников и спутника 9.
Пример m- файла для исследования корреляционных свойств сигнала с шумом и
копии сигнала. В файле в качестве источника шума использована функция MatLab
«randn». Программа иллюстрирует качественную картину влияния шума на взаимную корреляцию сигнала с шумом и копии сигнала. Для получения количественных значений в m- файл следует подставить конкретные значения соотношения сигнал/шум.
Файл Pr09_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))';%генерация шума
25
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])
26
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
Результаты выполнения m- файла изображены на рис. 1.12.
1500 1600 1700 1800 1900 2000 2100 2200 2300 2400 2500 0
500 1000
а
1500 1600 1700 1800 1900 2000 2100 2200 2300 2400 2500 0
500 1000
б
1500 1600 1700 1800 1900 2000 2100 2200 2300 2400 2500 0
500 1000
в
1500 1600 1700 1800 1900 2000 2100 2200 2300 2400 2500 0
500 1000
г
Рис. 1.12. Корреляция сигнала с шумом и копии сигнала: а-шум отсутствует; б-шум в 4 раза больше сигнала; в - шум в 8 раз больше сигнала; г- шум в 12 раз больше сигнала.
Комплексная программа обработки псевдослучайных кодов спутников GPS. При- веденный ниже m- файл позволяет одновременно выполнить все процедуры обработки псевдослучайных кодов спутников GPS, рассмотренные в предыдущих примерах.
Файл PrCodGPS S.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
27
Результаты выполнения m- файла изображены на рис. 1.12.
1500 1600 1700 1800 1900 2000 2100 2200 2300 2400 2500 0
500 1000
а
1500 1600 1700 1800 1900 2000 2100 2200 2300 2400 2500 0
500 1000
б
1500 1600 1700 1800 1900 2000 2100 2200 2300 2400 2500 0
500 1000
в
1500 1600 1700 1800 1900 2000 2100 2200 2300 2400 2500 0
500 1000
г
Рис. 1.12. Корреляция сигнала с шумом и копии сигнала: а-шум отсутствует; б-шум в 4 раза больше сигнала; в - шум в 8 раз больше сигнала; г- шум в 12 раз больше сигнала.
Комплексная программа обработки псевдослучайных кодов спутников GPS. При- веденный ниже m- файл позволяет одновременно выполнить все процедуры обработки псевдослучайных кодов спутников GPS, рассмотренные в предыдущих примерах.
Файл PrCodGPS S.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
27
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
%Графика сигналов
%%%%%%%%%%%%%%%%%%%%%%%%%
28
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])
29
'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])
29
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.
30
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.
30
0 100 200 300 400 500 600 700 800 900 1000 1100 0
0.5 1
Код GPS в двоичных символах
0 100 200 300 400 500 600 700 800 900 1000 1100
-1 0
1
Код GPS в символах "1","-1"
0 200 400 600 800 1000 1200 1400 1600 1800 2000
-2 0
2
Псевдослучайный шум
0 200 400 600 800 1000 1200 1400 1600 1800 2000
-5 0
5
Код GPS плюс шум
Рис. 1.13. Графика файла PrCodGPS.m- Figure 1 0
500 1000 1500 2000 2500 3000 3500 4000 0
500 1000
Автокорреляционная функция кода GPS
0 200 400 600 800 1000 1200 1400 1600 1800 2000
-100 0
100
Боковые лепестки автокрреляционной функции кода GPS
0 500 1000 1500 2000 2500 3000 3500 4000 0
500 1000
Автокорреляционная функция шума
0 200 400 600 800 1000 1200 1400 1600 1800 2000
-100 0
100
Боковые лепестки автокрреляционной функции шумa
Рис. 1.14.. Графика файла PrCodGPS.m- Figure 2 0
500 1000 1500 2000 2500 3000 3500 4000
-100 0
100
Взаимная корреляция кода GPS и шума
0 500 1000 1500 2000 2500 3000 3500 4000 0
1000 2000
Автокорреляционная функция кода GPS плюс шум
0 500 1000 1500 2000 2500 3000 3500 4000 0
500 1000
Взаимная корреляция кода GPS плюс шум и копии кода GPS
0 200 400 600 800 1000 1200 1400 1600 1800 2000
-200 0
200
Взаимная корреляция кода GPS плюс шум и копии кода GPS
Рис. 1.15.. Графика файла PrCodGPS.m- Figure 3 31
0 200 400 600 800 1000 1200 1400 1600 1800 2000
-10 0
10
Сумма кодов 11 спутников
0 500 1000 1500 2000 2500 3000 3500 4000
-1000 0
1000 2000
Автокорреляция суммы кодов 11 спутников
0 500 1000 1500 2000 2500 3000 3500 4000 0
500 1000 1500
Взаимная корреляция суммы кодов 11 спутников и кода 13 0
200 400 600 800 1000 1200 1400 1600 1800 2000
-500 0
500
Боковые лепестки взаимной корреляции суммы кодов 11 спутников и кода 13
Рис. 1.16. Графика файла PrCodGPS.m- Figure 4 0
500 1000 1500 2000 2500 3000 3500 4000
-100
-80
-60
-40
-20 0
20 40 60 80 100
Взаимная корреляция кода GPS (коды 13и 37)
Рис. 1.17. Графика файла PrCodGPS.m- Figure 5
1.5 Псевдослучайный код спутников ГЛОНАСС
1.5.1 Лабораторная работа 1. 3 «Код спутников ГЛОНАСС»
Цель лабораторной работы- формирование и исследование псевдослучайного ко- да спутников ГЛОНАСС.
Рекомендуется следующий порядок выполнения лабораторной работы.
1. Создайте папку CodGLONASS_My и скопируйтев ее все программы из папки
CodGLONASS.
2. Запустите MatLab, откройте функцию cod_GLONASS
,
изучите программные процеду- ры и комментарии, выполните задание.
3. Задание. Откройте файл BPS_K.m. Выполните файл. Опишите полученные графики и занесите описание графиков в отчет.
32
1.6 Функции и файлы из папки CodGLONASS
Функция cod_GLONASS (формирование М- последовательности спутников ГЛО-
НАСС)
function [codGL, codGL_bin,Out,n]=cod_GLONASS(n);
%Имя функции: cod_GLONASS
%Функция cod_GLONASS вычисляет псевдослучайный код ГЛОНАСС
%(М-последовательность). Входные данные: n- количество символов в М-последовательности.
%Выходные данные: codGL- М- последовательность в символах "1", "-1" ,
%codGL_bin- М-последователности в символах "0", "1",
%Out- столбцы кодов для сравнения, n- длина кода shift_reg=ones(1,9) ;%Начальное состояние регистра сдвига for i=1:n codGL_bin(i)=shift_reg(7); % Выход М-последователности в символах "0", "1" modulo2 = xor(shift_reg(9),shift_reg(5));%Сложение по модулю 2 символов с 9 и 5 выходов регистра сдвига shift_reg(2:9)=shift_reg(1:8); %Смещение данных в регистре сдвига shift_reg(1)=modulo2; % Сложение по модулю 2 на входе 1 регистра сдвига end codGL=2*codGL_bin-1;%М- последовательность в символах "1", "-1"
Out=[codGL_bin' codGL' ]; % Столбцы кодов для сравнения
Файла:BPS_K.m
%Имя m--файла:BPS_K.m
%программа расчета характеристик сигнала спутника ГЛОНАСС clear; n=511;%количество символов в М-последовательности
[codGL, codGL_bin,Out,n]=cod_GLONASS(n);%функция, формирующая М-последовательность
Dat= codGL_bin; fDat=0.511*10^6;% скорость передачи данных fc=4*fDat ; %carrier frequency-несущая частота fd=32*fDat; %частота дискретизации fd_fDat=fd/fDat; %отношение частоты дискретизации к символьной скорости t=(0:length(Dat)*fd_fDat-1)/fd; % дискретное время t1=(0:length(codGL)*fd_fDat-1)/fd;% дискретное время
BPSK=cos(2*pi*fc*t + pi*Dat(floor(fDat*t)+1));%модулированный сигнал
%y= pmmod(Dat(floor(fDat*t)+1),fc,fd,pi) ;%модулированный сигнал (вариант) y=BPSK;
%преобразование частоты x1=y.*cos(2*pi*fc*t);
33
x=y.*cos(2*pi*fc*t);
[b1,a1]=butter(3,fc*2/fd);%фильтр нижних частот с максимально-плоской характеристикой
[b,a]=ellip(10,2,60,fc*2/(32*fDat));%фильтр нижних частот с эллиптической характеристикой
%фильтрация высокочастотных составляющих x1=filtfilt(b1,a1,x1); x=filtfilt(b,a,x); m=3.20;
%Графика fig1=figure;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Сигналы спутников ГЛОНАСС
%Несущая subplot(3,1,1),plot(t,cos(2*pi*fc*t)) xlabel('а','FontSize',12,'FontName', 'TimesNewRoman') grid on xlim([3.07*10^(-4) m*10^(-4)]) ylim([-1.5 1.5])
%Несущая, модулированная М-последовательностью subplot(3,1,2),plot(t,BPSK) xlabel('б','FontSize',12,'FontName', 'TimesNewRoman') grid on xlim([3.07*10^(-4) m*10^(-4)]) ylim([-1.5 1.5])
%М-последовательность subplot(3,1,3),stem(t,Dat(floor(fDat*t)+1)) xlabel('в','FontSize',12,'FontName', 'TimesNewRoman') grid on xlim([3.07*10^(-4) m*10^(-4)]) ylim([-1.5 1.5])
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Фильтрация демодулированного сигнала ГЛОНАСС фильтром нижних частот с
%максимально плоской и эллиптической характеристиками m=5;
%figure(fig1); fig2=figure; subplot(3,1,1), plot(t,Dat(floor(fDat*t)+1)) xlabel('а','FontSize',12,'FontName', 'TimesNewRoman') grid on xlim([3.07*10^(-4) m*10^(-4)]) ylim([-1.5 1.5])
34
[b1,a1]=butter(3,fc*2/fd);%фильтр нижних частот с максимально-плоской характеристикой
[b,a]=ellip(10,2,60,fc*2/(32*fDat));%фильтр нижних частот с эллиптической характеристикой
%фильтрация высокочастотных составляющих x1=filtfilt(b1,a1,x1); x=filtfilt(b,a,x); m=3.20;
%Графика fig1=figure;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Сигналы спутников ГЛОНАСС
%Несущая subplot(3,1,1),plot(t,cos(2*pi*fc*t)) xlabel('а','FontSize',12,'FontName', 'TimesNewRoman') grid on xlim([3.07*10^(-4) m*10^(-4)]) ylim([-1.5 1.5])
%Несущая, модулированная М-последовательностью subplot(3,1,2),plot(t,BPSK) xlabel('б','FontSize',12,'FontName', 'TimesNewRoman') grid on xlim([3.07*10^(-4) m*10^(-4)]) ylim([-1.5 1.5])
%М-последовательность subplot(3,1,3),stem(t,Dat(floor(fDat*t)+1)) xlabel('в','FontSize',12,'FontName', 'TimesNewRoman') grid on xlim([3.07*10^(-4) m*10^(-4)]) ylim([-1.5 1.5])
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Фильтрация демодулированного сигнала ГЛОНАСС фильтром нижних частот с
%максимально плоской и эллиптической характеристиками m=5;
%figure(fig1); fig2=figure; subplot(3,1,1), plot(t,Dat(floor(fDat*t)+1)) xlabel('а','FontSize',12,'FontName', 'TimesNewRoman') grid on xlim([3.07*10^(-4) m*10^(-4)]) ylim([-1.5 1.5])
34
subplot(3,1,2), plot(t,x1) xlabel('б','FontSize',12,'FontName', 'TimesNewRoman') grid on xlim([3.07*10^(-4) m*10^(-4)]) ylim([-1.5 1.5]) subplot(3,1,3), plot(t,x) xlabel('в','FontSize',12,'FontName', 'TimesNewRoman') grid on xlim([3.07*10^(-4) m*10^(-4)]) ylim([-1.5 1.5])
%Фильтры fig3=figure; freqz(b1,a1,512,32*fDat), xlabel('а','FontSize',12,'FontName', 'TimesNewRoman') fig4=figure; freqz(b,a,512,32*fDat), xlabel('а','FontSize',12,'FontName', 'TimesNewRoman')
Результаты выполнения файла -:BPS_K.m приведены на рис. 1.18…рис. 1.21.
3.08 3.1 3.12 3.14 3.16 3.18 3.2
x 10
-4
-1 0
1
а
3.08 3.1 3.12 3.14 3.16 3.18 3.2
x 10
-4
-1 0
1
б
3.08 3.1 3.12 3.14 3.16 3.18 3.2
x 10
-4
-1 0
1
в
Рис. 1.18. Сигнал ГЛОНАСС- Figure 1: а- несущая; б- модулированная несущая; в- выборка дискретизированной М-последовательности
35
%Фильтры fig3=figure; freqz(b1,a1,512,32*fDat), xlabel('а','FontSize',12,'FontName', 'TimesNewRoman') fig4=figure; freqz(b,a,512,32*fDat), xlabel('а','FontSize',12,'FontName', 'TimesNewRoman')
Результаты выполнения файла -:BPS_K.m приведены на рис. 1.18…рис. 1.21.
3.08 3.1 3.12 3.14 3.16 3.18 3.2
x 10
-4
-1 0
1
а
3.08 3.1 3.12 3.14 3.16 3.18 3.2
x 10
-4
-1 0
1
б
3.08 3.1 3.12 3.14 3.16 3.18 3.2
x 10
-4
-1 0
1
в
Рис. 1.18. Сигнал ГЛОНАСС- Figure 1: а- несущая; б- модулированная несущая; в- выборка дискретизированной М-последовательности
35