SRNS:Песочница — различия между версиями

Материал из SRNS
Перейти к: навигация, поиск
 
Строка 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
 
}}
 

Текущая версия на 10:44, 28 марта 2014

Это Песочница. Она предназначена для экспериментов с редактированием статей. Не стесняйтесь тестировать возможности вики-разметки и пробовать различные варианты форматирования. Здесь можно допускать любые ляпы!

Если Вы зарегистрированы, то специально для Вас есть личная песочница. Вы можете её создать здесь.


Пожалуйста, пишите ниже линии.


А если я здесь чего-то понапишу, то этот текст останется, или будет автоматически стёрт? — К.В.Воронцов 12:42, 2 мая 2008 (MSD)

[править] Привет, Песочница!

Подсыпем песочка...

Персональные инструменты
Пространства имён

Варианты
Действия
SRNS Wiki
Рабочие журналы
Приватный файлсервер
QNAP Сервер
Инструменты