Перейти к содержанию
    

Вопросы по итеративному декодированию

Возник тут у меня вопрос, из класса вопросов "нутром чувствую что литр, а доказать не могу" (с). Итак :

1. возьмем созвездие BPSK с точками 1+1i и -1-1i. Его мощность равна 2. Мягкое решение по такому созвездию будем считать как LLR = re + im

2. возьмем комплексный генератор AWGN шума. Получим SNR = 0дб, для этого сделаем мощность шума равной 2. Сложим с сигналом из пункта 1.

Для такой системы будет EbN0 = EsNo - 10*log10(1) = SNR - 10*log10(1) = 0дб.

 

3. возьмем созвездие BPSK с точками sqrt(2) и -sqrt(2). Его мощность равна 2. Мягкое решение по такому созвездию будем считать как LLR = re.

4. возьмем комплексный генератор AWGN шума из первого примера. Сложим с сигналом из пункта 3.

Чему для такой системы будет равно EbN0 ? По идее должно быть тоже самое, но ведь по сути, с этим сигналом мы работаем как с вещественным и отбросили мнимую часть шума. Т.е. уменьшили мощность шума в 2 раза и EbNo не помешало бы подправить. Так как правильно ?

post-3453-1427287591_thumb.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Чему для такой системы будет равно EbN0 ? По идее должно быть тоже самое, но ведь по сути, с этим сигналом мы работаем как с вещественным и отбросили мнимую часть шума. Т.е. уменьшили мощность шума в 2 раза и EbNo не помешало бы подправить. Так как правильно ?

 

СПМ шума не изменилась от того, что ты повернул созвездие. Энеригия, затраченная на передачу бита тоже не изменилась, следовательно Eb/N0 осталось тем же самым.

 

Т.е. имеем два случая

1. Имеем два независимых AWGN канала с спм N0, по которым передаем параллельно одно и то же.

2. Сигнал с удвоенной энергетикой передается по AWGN каналу c спм N0.

 

Отношение Eb/N0 одинаковое. Формулы с картинки странные - не очень понятен конекст - при одинаковой длительности символа и SNR получаем вдвое худшее Es/N0, но при этом передаем двое меньшее количество бит на символ?

Изменено пользователем andyp

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Отношение Eb/N0 одинаковое. Формулы с картинки странные - не очень понятен конекст - при одинаковой длительности символа и SNR получаем вдвое худшее Es/N0, но при этом передаем двое меньшее количество бит на символ?

Это скан с хелпа матлаба. Смотреть по ключевой фразе "AWGN Сhannel Noise Level" там раздел "Relationship Between EsNo and SNR".

 

Все началось с простого скрипта :

clear all; 

format short; 

EbNo = 3;
EsNo = EbNo + 10*log10(1);   % uncoded BPSK 
SNR  = EsNo; 

Nbits = 1e6; 

msg = randi([0:1], 1, Nbits);

tx_symb = (2*msg-1) + 1i*(2*msg-1);
tx_symb1 = sqrt(2)*real(tx_symb); 

% rx_symb  = awgn(tx_symb, SNR, 10*log10(2));
% rx_symb1 = awgn(tx_symb1, SNR, 10*log10(2));
rx_symb  = awgn(tx_symb, SNR, 'measured');
rx_symb1 = awgn(tx_symb1, SNR, 'measured');

hd_bits  = ((real(rx_symb) + imag(rx_symb)) >= 0);
hd_bits1 = (rx_symb1 >= 0);

ber = biterr(msg, hd_bits)/Nbits; 
ber1 = biterr(msg, hd_bits1)/Nbits; 

disp(['ber = ', num2str(ber), ' ber1 = ', num2str(ber1)]);

и вот результат ber = 0.022964 ber1 = 0.078718

 

если сделать правку

rx_symb1 = awgn(tx_symb1, SNR+3, 'measured');

то результат более ожидаем ber = 0.02301 ber1 = 0.022947

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для вещественных сигналов (созвездий) нужно добавлять 3 дБ.

Вы должны принимать решение по одномерному созвездию, то есть использовать только одну координату. Поворот не делает созвездие двумерным.

 

rx_symb  = awgn(tx_symb, SNR+3, 'measured');
rx_symb1 = awgn(tx_symb1, SNR+3, 'measured');
hd_bits  = (real(rx_symb)>= 0);
hd_bits1 = (rx_symb1 >= 0);

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Дело кажется в реализации функции awgn. Добавляю шум вручную:

Ps = 2;
Pn = Ps * 10^(-SNR/10); 
noise = randn(1, Nbits)+1j*randn(1, Nbits);
noise = noise * Pn;
Pn_meas = noise*noise'/Nbits;
rx_symb = tx_symb + noise;
rx_symb1 = tx_symb1 + real(noise);

 

Результат: ber = 0.07943 ber1 = 0.079298

 

Возможно там делается какая то нормировка.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нельзя BPSK рассматривать как двумерное созвездие.

Про комплекнсый и вещестыенный шум в справке по AWGN всё написано.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В функции awgn есть такая проверка

% --- Add the noise
if(isreal(sig))
   opType = 'real';
else
   opType = 'complex';
end

 

Если в первом примере записать так:

tx_symb = (2*msg-1) + 1i*(2*msg-1);
tx_symb1 = sqrt(2)*real(tx_symb) + 1i*1e-15;

 

То результаты для обоих созвездий примерно совпадают.

 

Нельзя BPSK рассматривать как двумерное созвездие.

Почему? Это такой же комплексный сигнал как и остальные.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Почему? Это такой же комплексный сигнал как и остальные.

Это одномерный сигнал. В решении участвует только одна координата. Поворот созвездия изменяет только направление измерения.

Изменено пользователем Grizzzly

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот в приведенном примере:

hd_bits  = ((real(rx_symb) + imag(rx_symb)) >= 0);

Энергия для решения собирается с обеих координат иначе потеря в энергетике не менее 3 дБ (при условии 100% восстановленной фазы). К bpsk применимы все комплексные мат методы, что и для остальных psk, в т.ч. arg(x), которая не имеет смысла для вещественного/одномерного сигнала. Предлагаю спор о вещественности/материальности/еще-чего-то-там bpsk сигнала закрыть, что бы не засорять тему :rolleyes:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Результат: ber = 0.07943 ber1 = 0.079298

 

Для SNR = 3 дБ BER = 0.022964.

 

Если в первом примере записать так:

tx_symb = (2*msg-1) + 1i*(2*msg-1);
tx_symb1 = sqrt(2)*real(tx_symb) + 1i*1e-15;

Вы изначально вещественный сигнал tx_symb1 сделали комплексным, тогда, естественно, в awgn нужно использовать SNR. В случае же вещественного сигнала - (SNR + 3).

Изменено пользователем Grizzzly

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, вчера вечером затупил про одномерность повернутого BPSK...

Нашел в архиве статью про добавление белого шума к сигнальным отсчетам. Там как раз про 3 дБ говорится.

10.1109_13.168713.pdf

Про различия СПМ - когда N0, а когда N0/2.

А в разделе "Relationship Among Eb/No, Es/No, and SNR Modes" говорится тоже самое, что в статье, только кратко: http://www.mathworks.com/help/comm/ref/awgnchannel.html

Изменено пользователем Grizzzly

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Почитал статью, спасибо. Но меня их подход решительно смутил. Выразили мощность полосового реального сигнала через 0-й отчёт автокорреляционной функции - ок, далее они говорят, что мощность комплексной огибающей на нуле такого сигнала можно выразить через сумму 0-х отчётов автокорреляционных функций квадратур re и im. Тоже нет вопросов. Но потом они удтверждают, что при переходе на комплексное представление сигнала мы имеем (математически) удвоение мощности, для этого они полагают, что максимум АКФ квадратур и АКФ полосового сигнала одинаковы по величине. Но пардонте, как же так?

Вот накида скрипт (взял ЛЧМ для примера) envelope_pwr.zip

Из него видно, что при переносе сигнала с ПЧ на ноль энергия делится между квадратурами, так что суммарная энергия не изменяется. Тоже и для шумового процесса: берем действительный шум, умножаем его на комплексную несущую и измеряем мощность полученных re и im компонент комплексного шумового процесса. В скрипте это тоже приведено. Что касается АКФ, получил вот такую картинку:

post-81866-1427359278_thumb.png

Из неё видно, что в lag=0 АКФ полосового сигнала в 2 раза больше АКФ квадратуры.

В общем у меня много вопросов к статье. Получается, что там ищутся объяснения математическим эффектам, которые не проявляются в реальной жизни. Поправте, если я рассуждаю неверно, всегда готов учиться :rolleyes:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, при чтении меня тоже кое-что там смущало. Надо будет внимательнее посмотреть.

Сейчас просмотрел десяток учебников по Digital Communication, нигде ничего подобно нет. Есть только описание действительного шума с N0/2 и комплексного с N0.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы должны принимать решение по одномерному созвездию, то есть использовать только одну координату. Поворот не делает созвездие двумерным.

На каком основании именно должен? Есть квадратурный приемник, обработка идет в двух квадратурах. Как я их поверну для принятия решения дело десятое. Могу вообще перевести в полярные координаты и принимать решение по углу.

 

Дело кажется в реализации функции awgn. Добавляю шум вручную:

проверка sum(abs(rx_symb - tx_symb).^2)/Nbits и sum(abs(rx_symb1 - tx_symb1).^2)/Nbits показывает что мощность шума у вас там разная.

 

Если в первом примере записать так:

tx_symb = (2*msg-1) + 1i*(2*msg-1);
tx_symb1 = sqrt(2)*real(tx_symb) + 1i*1e-15;

 

То результаты для обоих созвездий примерно совпадают.

Результат удивил. похоже что

Возможно там делается какая то нормировка.

вы правы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

На каком основании именно должен? Есть квадратурный приемник, обработка идет в двух квадратурах. Как я их поверну для принятия решения дело десятое. Могу вообще перевести в полярные координаты и принимать решение по углу.

С утра понял, что был неправ.

Результат удивил. похоже что

Возможно там делается какая то нормировка.

вы правы.

Для комплексного сигнала мощность шума делится пополам между квадратурами, а для вещественного она целиком добавляется к нему.

Можно открыть функции awgn и wgn и посмотреть на эту реализацию.

if(strcmp(cplxMode,'complex'))
   y = (sqrt(imp*noisePower/2))*(func(row, col)+1i*func(row, col));
else
   y = (sqrt(imp*noisePower))*func(row, col);
end;

noisePower = sigPower-reqSNR (в дБ) или noisePower = sigPower/reqSNR;

Для ВЕЩЕСТВЕННЫХ сигналов должна быть (noisePower/2), как в данном коде:

http://www.mathworks.com/matlabcentral/fil...tent/bpskAWGN.m

 

Вообще странно реализована функция awgn, в своё время с этим намучился, понял, что надо добавлять 3 дБ и успокоился, только сейчас так глубоко докопался. В Simulink таких проблем с AWGN Channel нет. Задаю для обычного BPSK Eb/N0 = 3 дБ и получаю BER =~0.025, что ожидаемо. Задаю BPSK с поворотом на 45 градусов против часой стрелки, получаю такой же BER. AWGN Channel правильно распознает типы данных и прибавляет нужный уровень шума.

Изменено пользователем Grizzzly

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...