Моделирование коррелированных гауссовых СВ — различия между версиями

Материал из SRNS
Перейти к: навигация, поиск
(Статистический эквивалент коррелятора)
(Многомерная нормальная СВ или вектор случайных величин?)
 
(не показаны 15 промежуточных версий 1 участника)
Строка 17: Строка 17:
 
Математические ожидания СВ <math>n_{Ip}</math>, <math>n_{Ie}</math>, <math>n_{Il}</math> равны нулю, их дисперсии есть
 
Математические ожидания СВ <math>n_{Ip}</math>, <math>n_{Ie}</math>, <math>n_{Il}</math> равны нулю, их дисперсии есть
  
<math>\sigma_{IQ}^2 = \frac{\sigma_n^2 L}{2}</math>,
+
<math>\sigma_{IQ}^2 = \frac{\sigma_n^2 N}{2}</math>,
  
где <math>\sigma_n^2</math> - дисперсия шумов на выходе АЦП, <math>L</math> - число суммируемых отсчетов в корреляторе, эти величины считаются известными.  
+
где <math>\sigma_n^2</math> - дисперсия шумов на выходе АЦП, <math>N</math> - число суммируемых отсчетов в корреляторе, эти величины считаются известными.  
  
 
Нетрудно рассчитать попарные взаимные дисперсии:
 
Нетрудно рассчитать попарные взаимные дисперсии:
  
<math>M\left[n_{Ip} n_{Ie}\right] = M\left[n_{Ip} n_{Il}\right] = // \frac{\Delta \tau}{2 \tau_e} \sigma_{IQ}^2 // = \rho \left( \frac{\Delta \tau}{2} \right) \sigma_{IQ}^2</math>,
+
<math>M\left[n_{Ip} n_{Ie}\right] = M\left[n_{Ip} n_{Il}\right] = \rho \left( \frac{\Delta \tau}{2} \right) \sigma_{IQ}^2</math>,
  
 
<math>M\left[n_{Ie} n_{Il}\right] = \rho \left( \Delta \tau \right) \sigma_{IQ}^2</math>,
 
<math>M\left[n_{Ie} n_{Il}\right] = \rho \left( \Delta \tau \right) \sigma_{IQ}^2</math>,
  
''Примечание.'' Задача формирования шумов квадратурных сумм - абсолютно аналогична и независима, т.к. шумы между I и Q компонентами не коррелируют.
+
Требуется на ЭВМ, имея генератор случайных нормальных чисел, '''формировать реализации СВ''' <math>n_{Ip}</math>, <math>n_{Ie}</math>, <math>n_{Il}</math>.
 +
 
 +
''Примечание.'' Задача формирования шумов квадратурных сумм - абсолютно аналогична и независима, т.к. шумы между I и Q компонентами не коррелируют и независимы.
  
 
== Многомерная нормальная СВ или вектор случайных величин? ==
 
== Многомерная нормальная СВ или вектор случайных величин? ==
Строка 44: Строка 46:
  
 
Из первого условия следует, что каждая из компонент нормальной векторной СВ имеет нормальное распределение (для компоненты  <math>i</math> это вытекает при  <math>a_i = 1</math> и остальных коэффициентах комбинации, равных 0). Отсюда часто возникает иллюзия, что нормальность распределений компонент влечет нормальность совместного распределения. Этот тезис не выполняется, на контрпример можно взглянуть [http://risktheory.ru/topic_normmarg.htm тут].
 
Из первого условия следует, что каждая из компонент нормальной векторной СВ имеет нормальное распределение (для компоненты  <math>i</math> это вытекает при  <math>a_i = 1</math> и остальных коэффициентах комбинации, равных 0). Отсюда часто возникает иллюзия, что нормальность распределений компонент влечет нормальность совместного распределения. Этот тезис не выполняется, на контрпример можно взглянуть [http://risktheory.ru/topic_normmarg.htm тут].
 +
 +
Шумы корреляционных сумм <math>n_{Ip}</math>, <math>n_{Ie}</math>, <math>n_{Il}</math> получены сворачиванием входного шума <math>n</math> с тремя опорными сигналами. Таким образом, выполняется второе необходимое и достаточное условие того, что тройка <math>n_{Ip}</math>, <math>n_{Ie}</math>, <math>n_{Il}</math> '''имеет многомерное нормальное распределение''' (если выборку <math>n</math> обозначить как <math>\mathbf{Z}</math>, опорные сигналы записать в виде трех строк матрицы <math>\mathbf{A}</math>, <math>\mathbf{\mu}</math> - вектор-столбец из трех нулей)
 +
 +
Итого, компоненты <math>\left| {\begin{array}{*{20}{c}}
 +
n_{Ip}&n_{Ie}&n_{Il}\\
 +
\end{array}} \right|^T</math> образуют многомерную нормальную СВ с нулевым мат. ожиданием и ковариационной матрицей:
 +
 +
<math>D = \left| {\begin{array}{*{20}{c}}
 +
\sigma_{IQ}^2&\rho \left( \frac{\Delta \tau}{2} \right) \sigma_{IQ}^2&\rho \left( \frac{\Delta \tau}{2} \right) \sigma_{IQ}^2\\
 +
\rho \left( \frac{\Delta \tau}{2} \right) \sigma_{IQ}^2&\sigma_{IQ}^2&\rho \left( \Delta \tau \right) \sigma_{IQ}^2\\
 +
\rho \left( \frac{\Delta \tau}{2} \right) \sigma_{IQ}^2&\rho \left( \Delta \tau \right) \sigma_{IQ}^2&\sigma_{IQ}^2
 +
\end{array}} \right|</math>.
 +
 +
== Разложение Холецкого ==
 +
 +
Существует разложение матрицы <math>A</math> в виде <math>A = LL^T</math>, где <math>L</math> — нижняя треугольная матрица со строго положительными элементами на диагонали. Данное представление называется [http://ru.wikipedia.org/wiki/Разложение_Холецкого разложением Холецкого] и относительно легко рассчитывается. Разложение Холецкого всегда существует и единственно для любой симметричной положительно-определённой матрицы.
 +
 +
Применим разложение Холецкого к ковариационной матрице:
 +
 +
<math>L = chol(D), D = LL^T</math>.
 +
 +
Умножим полученную матрицу на вектор-столбец <math>r</math> из трех независимых нормальных стандартных СВ:
 +
 +
<math>n_I = L r</math>.
 +
 +
Компоненты вектора <math>n_I</math> образуют многомерную нормальную случайную величину, т.к. выполняется второе необходимое и достаточное условие.
 +
 +
Нетрудно показать, что вектор математических ожиданий <math>n_I</math> - нулевой, а ковариационная матрица <math>D = LL^T</math>. Таким образом, <math>n_I</math> - требуемая многомерная СВ.
 +
 +
== Реализация в MATLAB ==
 +
 +
Пример использования:
 +
<source lang="matlab">
 +
qcno_dB = 45;
 +
N = 10000;
 +
stdn = 8;
 +
 +
stdn_IQ = sqrt(stdn^2 * N /2);
 +
 +
ro1 = 0.75;
 +
ro2 = 0.5;
 +
Dp=stdn_IQ^2; Dpe=ro1*stdn_IQ^2; Del=ro2*stdn_IQ^2;
 +
 +
L=chol([Dp  Dpe Dpe;
 +
        Dpe Dp  Del;
 +
        Dpe Del Dp])';
 +
 +
Nj = 1000000;
 +
nIp = nan(1,Nj);
 +
nIe = nan(1,Nj);
 +
nIl = nan(1,Nj);
 +
for j = 1:Nj
 +
    nI = L*randn(3,1);
 +
   
 +
    nIp(j) = nI(1);
 +
    nIe(j) = nI(2);
 +
    nIl(j) = nI(3);
 +
end
 +
 +
fprintf('Corrcoeff nIp nIe = %f\n', mean(nIp.*nIe / std(nIp) / std(nIe) ));
 +
fprintf('Corrcoeff nIl nIe = %f\n', mean(nIl.*nIe / std(nIl) / std(nIe) ));
 +
</source>
 +
 +
Вывод:
 +
 +
<source lang="matlab">
 +
Corrcoeff nIp nIe = 0.750737
 +
Corrcoeff nIl nIe = 0.500801
 +
</source>
 +
 +
Реализация в виде функции (не стоит использовать в цикле, т.к. каждый раз будет вычисляться разложение):
 +
<source lang="matlab">
 +
 +
function [X, L] = getCorrelatedRV( D, m )
 +
%GETCORRELATEDRV Returns gaussian corralated random vector
 +
 +
sizeD = size(D);
 +
 +
if (sizeD(1) ~= sizeD(2))
 +
    error('Covariance matrix must be square.')
 +
end
 +
   
 +
if (nargin == 1)
 +
    m = zeros(sizeD(1), 1);
 +
elseif ((nargin < 1) || (nargin > 2))
 +
    error('Incorrect number of inputs.');
 +
end
 +
 +
if nargin == 2
 +
    sizem = size(m);
 +
    if sizem(1) == 1
 +
        m = m';
 +
        sizem = size(m);
 +
    end
 +
    if sizem(2) > 1
 +
        error('Second argument must be vector.');
 +
    end
 +
    if (sizem(1) ~= sizeD(1))
 +
        error('Dimensions of D and m are not consistent.');
 +
    end
 +
end
 +
 +
L = chol(D)';
 +
 +
X = L * randn(sizeD(1), 1) + m;
 +
 +
end
 +
</source>
  
 
[[Category:ММ РУиС (дисциплина)‎]]
 
[[Category:ММ РУиС (дисциплина)‎]]
 +
[[Category:Моделирование]]

Текущая версия на 14:56, 8 мая 2014

При моделировании следящих систем НАП, а так же сигналов многоантенных НАП, возникает задача создания нормальных случайных величин с заданным коэффициентом корреляции.

Рассмотрим решение данной задачи на примере модели шумов статистического эквивалента корреляционных сумм I_p, I_e и I_l.

Содержание

[править] Статистический эквивалент коррелятора

Статистический эквивалент коррелятора синфазных корреляционных сумм в отсутствии помех можно описать выражениями:

I_p = A_{IQ} \rho\left(\delta \tau\right) sinc\left(\frac{\delta \omega T}{2}\right) cos\left(\frac {\delta \omega T}{2} + \delta\varphi\right) + n_{Ip},

I_{e} = A_{IQ} \rho\left(\delta \tau - \frac{\Delta \tau}{2}\right) sinc\left(\frac{\delta \omega T}{2}\right) cos\left(\frac {\delta \omega T}{2} + \delta\varphi\right) + n_{Ie},

I_{l} = A_{IQ} \rho\left(\delta \tau + \frac{\Delta \tau}{2}\right) sinc\left(\frac{\delta \omega T}{2}\right) cos\left(\frac {\delta \omega T}{2} + \delta\varphi\right) + n_{Il},

которые для полной картины необходимо дополнить определениями A_{IQ}, \rho() и т.д., а так же описанием шумов n_{Ip}, n_{Ie}, n_{Il}.

Математические ожидания СВ n_{Ip}, n_{Ie}, n_{Il} равны нулю, их дисперсии есть

\sigma_{IQ}^2 = \frac{\sigma_n^2 N}{2},

где \sigma_n^2 - дисперсия шумов на выходе АЦП, N - число суммируемых отсчетов в корреляторе, эти величины считаются известными.

Нетрудно рассчитать попарные взаимные дисперсии:

M\left[n_{Ip} n_{Ie}\right] = M\left[n_{Ip} n_{Il}\right]  = \rho \left( \frac{\Delta \tau}{2} \right) \sigma_{IQ}^2,

M\left[n_{Ie} n_{Il}\right] = \rho \left( \Delta \tau \right) \sigma_{IQ}^2,

Требуется на ЭВМ, имея генератор случайных нормальных чисел, формировать реализации СВ n_{Ip}, n_{Ie}, n_{Il}.

Примечание. Задача формирования шумов квадратурных сумм - абсолютно аналогична и независима, т.к. шумы между I и Q компонентами не коррелируют и независимы.

[править] Многомерная нормальная СВ или вектор случайных величин?

При синтезе радиотехнических систем часто используются модели, оперирующие с многомерными нормальными случайными величинами. Определение из Википедии:

Случайный вектор \mathbf{X} = (X_1,\ldots, X_n)^{\top}: \Omega \to \mathbb{R}^n имеет многомерное нормальное распределение, если выполняется одно из следующих эквивалентных условий:
  • Произвольная линейная комбинация компонентов вектора \sum\limits_{i=1}^n a_i X_i имеет нормальное распределение или является константой.
  • Существует вектор независимых стандартных нормальных случайных величин \mathbf{Z}=(Z_1,\ldots, Z_m)^{\top}, вещественный вектор \mathbf{\mu} = (\mu_1,\ldots, \mu_n)^{\top} и матрица \mathbf{A} размерности n \times m, такие что:
\mathbf{X} = \mathbf{A} \mathbf{Z} + \mathbf{\mu}.
  • Существует вектор \mathbf{\mu} \in \mathbb{R}^n и неотрицательно определённая симметричная матрица \mathbf{\Sigma} размерности n \times n, такие что характеристическая функция вектора \mathbf{X} имеет вид:
\phi_{\mathbf{X}}(\mathbf{u}) = e^{i \mathbf{\mu}^{\top} \mathbf{u} - \frac{1}{2}\mathbf{u}^{\top} \Sigma \mathbf{u}},\; \mathbf{u} \in \mathbb{R}^n.

Из первого условия следует, что каждая из компонент нормальной векторной СВ имеет нормальное распределение (для компоненты i это вытекает при a_i = 1 и остальных коэффициентах комбинации, равных 0). Отсюда часто возникает иллюзия, что нормальность распределений компонент влечет нормальность совместного распределения. Этот тезис не выполняется, на контрпример можно взглянуть тут.

Шумы корреляционных сумм n_{Ip}, n_{Ie}, n_{Il} получены сворачиванием входного шума n с тремя опорными сигналами. Таким образом, выполняется второе необходимое и достаточное условие того, что тройка n_{Ip}, n_{Ie}, n_{Il} имеет многомерное нормальное распределение (если выборку n обозначить как \mathbf{Z}, опорные сигналы записать в виде трех строк матрицы \mathbf{A}, \mathbf{\mu} - вектор-столбец из трех нулей)

Итого, компоненты \left| {\begin{array}{*{20}{c}}
n_{Ip}&n_{Ie}&n_{Il}\\
\end{array}} \right|^T образуют многомерную нормальную СВ с нулевым мат. ожиданием и ковариационной матрицей:

D = \left| {\begin{array}{*{20}{c}}
\sigma_{IQ}^2&\rho \left( \frac{\Delta \tau}{2} \right) \sigma_{IQ}^2&\rho \left( \frac{\Delta \tau}{2} \right) \sigma_{IQ}^2\\
\rho \left( \frac{\Delta \tau}{2} \right) \sigma_{IQ}^2&\sigma_{IQ}^2&\rho \left( \Delta \tau \right) \sigma_{IQ}^2\\
\rho \left( \frac{\Delta \tau}{2} \right) \sigma_{IQ}^2&\rho \left( \Delta \tau \right) \sigma_{IQ}^2&\sigma_{IQ}^2
\end{array}} \right|.

[править] Разложение Холецкого

Существует разложение матрицы A в виде A = LL^T, где L — нижняя треугольная матрица со строго положительными элементами на диагонали. Данное представление называется разложением Холецкого и относительно легко рассчитывается. Разложение Холецкого всегда существует и единственно для любой симметричной положительно-определённой матрицы.

Применим разложение Холецкого к ковариационной матрице:

L = chol(D), D = LL^T.

Умножим полученную матрицу на вектор-столбец r из трех независимых нормальных стандартных СВ:

n_I = L r.

Компоненты вектора n_I образуют многомерную нормальную случайную величину, т.к. выполняется второе необходимое и достаточное условие.

Нетрудно показать, что вектор математических ожиданий n_I - нулевой, а ковариационная матрица D = LL^T. Таким образом, n_I - требуемая многомерная СВ.

[править] Реализация в MATLAB

Пример использования:

qcno_dB = 45;
N = 10000;
stdn = 8;

stdn_IQ = sqrt(stdn^2 * N /2);

ro1 = 0.75;
ro2 = 0.5;
Dp=stdn_IQ^2; Dpe=ro1*stdn_IQ^2; Del=ro2*stdn_IQ^2;

L=chol([Dp  Dpe Dpe;
        Dpe Dp  Del;
        Dpe Del Dp])';

Nj = 1000000;
nIp = nan(1,Nj);
nIe = nan(1,Nj);
nIl = nan(1,Nj);
for j = 1:Nj
    nI = L*randn(3,1);
   
    nIp(j) = nI(1);
    nIe(j) = nI(2);
    nIl(j) = nI(3);
end

fprintf('Corrcoeff nIp nIe = %f\n', mean(nIp.*nIe / std(nIp) / std(nIe) ));
fprintf('Corrcoeff nIl nIe = %f\n', mean(nIl.*nIe / std(nIl) / std(nIe) ));

Вывод:

Corrcoeff nIp nIe = 0.750737
Corrcoeff nIl nIe = 0.500801

Реализация в виде функции (не стоит использовать в цикле, т.к. каждый раз будет вычисляться разложение):

function [X, L] = getCorrelatedRV( D, m )
%GETCORRELATEDRV Returns gaussian corralated random vector

sizeD = size(D);

if (sizeD(1) ~= sizeD(2))
    error('Covariance matrix must be square.')
end
   
if (nargin == 1)
    m = zeros(sizeD(1), 1);
elseif ((nargin < 1) || (nargin > 2))
    error('Incorrect number of inputs.');
end

if nargin == 2
    sizem = size(m);
    if sizem(1) == 1
        m = m';
        sizem = size(m);
    end
    if sizem(2) > 1
        error('Second argument must be vector.');
    end
    if (sizem(1) ~= sizeD(1))
        error('Dimensions of D and m are not consistent.');
    end
end

L = chol(D)';

X = L * randn(sizeD(1), 1) + m;

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

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