SRNS:Песочница — различия между версиями
Материал из SRNS
Dneprov (обсуждение | вклад) (→Привет, Песочница!) |
Dneprov (обсуждение | вклад) |
||
Строка 18: | Строка 18: | ||
{{Hider | {{Hider | ||
− | |title = | + | |title = Листинг модели |
− | |content = | + | |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 | |frame-style = border:1px solid Plum | ||
|title-style = color:black;background-color:lavender;font-weight:bold | |title-style = color:black;background-color:lavender;font-weight:bold |
Версия 10:43, 28 марта 2014
Это Песочница. Она предназначена для экспериментов с редактированием статей. Не стесняйтесь тестировать возможности вики-разметки и пробовать различные варианты форматирования. Здесь можно допускать любые ляпы!
Если Вы зарегистрированы, то специально для Вас есть личная песочница. Вы можете её создать здесь.
Пожалуйста, пишите ниже линии.
А если я здесь чего-то понапишу, то этот текст останется, или будет автоматически стёрт? — К.В.Воронцов 12:42, 2 мая 2008 (MSD)
Привет, Песочница!
Подсыпем песочка...
Листинг модели
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
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
См. другую статью