|
|
Строка 16: |
Строка 16: |
| | | |
| Подсыпем песочка... | | Подсыпем песочка... |
− |
| |
− | {{Hider
| |
− | |title = Листинг модели
| |
− | |content = <source lang = matlab>
| |
− | close all;
| |
− | clear
| |
− | clc
| |
− |
| |
− | global tauChip
| |
− | tauChip = 1e-3/511; % Длительность чипа
| |
− |
| |
− | NoiseEnable = 1;
| |
− |
| |
− | Np = 1000;
| |
− |
| |
− | Tc = 0.001; % Период интегрирования в корреляторе
| |
− |
| |
− | qcno_dB = 45;
| |
− | stdn_IQ = 1; % СКО шума квадратурных сумм
| |
− |
| |
− | qcno = 10^(qcno_dB/10);
| |
− | A_IQ = stdn_IQ * sqrt(2 * qcno * Tc);
| |
− |
| |
− | tauIst = tauChip/5;
| |
− | deltaTau = tauChip/10;
| |
− |
| |
− | Dp=stdn_IQ^2; % Дисперсия promt компоненты
| |
− | Dpe=ro(deltaTau/2)*stdn_IQ^2; % Взаимная дисперсия promt-early/late
| |
− | Del=ro(deltaTau)*stdn_IQ^2; % Взаимная дисперсия early-late
| |
− |
| |
− | L=chol([Dp Dpe Dpe; % Используем разложение Холецкого
| |
− | Dpe Dp Del;
| |
− | Dpe Del Dp])';
| |
− |
| |
− |
| |
− | tauExtr= [tauIst-2*tauChip:4*tauChip/1000:tauIst+2*tauChip];
| |
− | NtauExtr = length(tauExtr);
| |
− |
| |
− | EpsPhi = 1*rand(1,1)*2*pi;
| |
− | EpsW = 1*10*2*pi;
| |
− |
| |
− | SdTeor = 2*qcno*Tc*sinc(EpsW*Tc/2 /pi)^2*[4/tauChip - 2*(deltaTau/tauChip^2)]; % Теоретическая крутизна
| |
− |
| |
− | Ud = zeros(1,NtauExtr);
| |
− | Udteor = zeros(1,NtauExtr);
| |
− |
| |
− | p = nan(1,NtauExtr);
| |
− | p_early = nan(1,NtauExtr);
| |
− | p_late = nan(1,NtauExtr);
| |
− | EpsTau = nan(1,NtauExtr);
| |
− |
| |
− | for k = 1:NtauExtr
| |
− |
| |
− | EpsTau(k) = tauIst - tauExtr(k);
| |
− |
| |
− | p(k) = ro(EpsTau(k));
| |
− | p_late(k) = ro(EpsTau(k)+deltaTau/2);
| |
− | p_early(k) = ro(EpsTau(k)-deltaTau/2);
| |
− |
| |
− | for n = 1:Np
| |
− |
| |
− | nI = L * randn(3,1); % Применяем результат разложения Холецкого и получаем коррелированные шумы
| |
− | nQ = L* randn(3,1);
| |
− |
| |
− | mI = A_IQ * p(k) * sinc(EpsW*Tc/2 /pi) * cos(EpsW*Tc/2 + EpsPhi);
| |
− | mIe = A_IQ*p_early(k) * sinc(EpsW*Tc/2 /pi) * cos(EpsW*Tc/2 + EpsPhi);
| |
− | mIl = A_IQ*p_late(k) *sinc(EpsW*Tc/2 /pi) * cos(EpsW*Tc/2 + EpsPhi);
| |
− |
| |
− | mQ = -A_IQ * p(k) * sinc(EpsW*Tc/2 /pi) * sin(EpsW*Tc/2 + EpsPhi);
| |
− | mQe = -A_IQ*p_early(k) * sinc(EpsW*Tc/2 /pi) * sin(EpsW*Tc/2 + EpsPhi);
| |
− | mQl = -A_IQ*p_late(k) * sinc(EpsW*Tc/2 /pi) * sin(EpsW*Tc/2 + EpsPhi);
| |
− |
| |
− | I = mI + NoiseEnable*nI(1,1);
| |
− | Ie = mIe + NoiseEnable*nI(2,1);
| |
− | Il = mIl + NoiseEnable*nI(3,1);
| |
− | Q = mQ + NoiseEnable*nQ(1,1);
| |
− | Qe = mQe + NoiseEnable*nQ(2,1);
| |
− | Ql = mQl + NoiseEnable*nQ(3,1);
| |
− |
| |
− | Ud(k) = Ud(k) + (Ie^2-Il^2) + (Qe^2-Ql^2);
| |
− | end
| |
− | Udteor(k) = 2*qcno*Tc*(sinc(EpsW*Tc/2 /pi)^2)*(p_early(k)^2 - p_late(k)^2);
| |
− | if ~mod(k,100)
| |
− | fprintf('Progress: %.2f %%\n', k*100/NtauExtr)
| |
− | end
| |
− | end
| |
− |
| |
− | plot(EpsTau/tauChip, [Ud/Np; Udteor; SdTeor*EpsTau])
| |
− | xlabel('\epsilon_{tau}/\tau_{chip}')
| |
− | ylim([min(Udteor)-10 max(Udteor)+10])
| |
− | grid on
| |
− | </source>
| |
− | |frame-style = border:1px solid Plum
| |
− | |title-style = color:black;background-color:lavender;font-weight:bold
| |
− | |content-style = color:black;background-color:ghostwhite;text-align:center
| |
− | |footer =
| |
− | |footer-style = background-color:lightgray;text-align:right
| |
− | }}
| |
А если я здесь чего-то понапишу, то этот текст останется, или будет автоматически стёрт? — К.В.Воронцов 12:42, 2 мая 2008 (MSD)
Подсыпем песочка...