реклама на сайте
подробности

 
 
16 страниц V  « < 7 8 9 10 11 > »   
Reply to this topicStart new topic
> Вопросы по итеративному декодированию, Реализация CTC/BTC/LDPC кодов
des00
сообщение Mar 25 2015, 12:47
Сообщение #121


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Возник тут у меня вопрос, из класса вопросов "нутром чувствую что литр, а доказать не могу" (с). Итак :
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 не помешало бы подправить. Так как правильно ?
Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Go to the top of the page
 
+Quote Post
andyp
сообщение Mar 25 2015, 14:11
Сообщение #122


Местный
***

Группа: Участник
Сообщений: 453
Регистрация: 23-07-08
Пользователь №: 39 163



Цитата(des00 @ Mar 25 2015, 15:47) *
Чему для такой системы будет равно EbN0 ? По идее должно быть тоже самое, но ведь по сути, с этим сигналом мы работаем как с вещественным и отбросили мнимую часть шума. Т.е. уменьшили мощность шума в 2 раза и EbNo не помешало бы подправить. Так как правильно ?


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

Т.е. имеем два случая
1. Имеем два независимых AWGN канала с спм N0, по которым передаем параллельно одно и то же.
2. Сигнал с удвоенной энергетикой передается по AWGN каналу c спм N0.

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

Сообщение отредактировал andyp - Mar 25 2015, 14:15
Go to the top of the page
 
+Quote Post
des00
сообщение Mar 25 2015, 14:49
Сообщение #123


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(andyp @ Mar 25 2015, 22:11) *
Отношение 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


--------------------
Go to the top of the page
 
+Quote Post
Grizzzly
сообщение Mar 25 2015, 15:23
Сообщение #124


Знающий
****

Группа: Свой
Сообщений: 565
Регистрация: 22-02-13
Пользователь №: 75 748



Для вещественных сигналов (созвездий) нужно добавлять 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);
Go to the top of the page
 
+Quote Post
serjj
сообщение Mar 25 2015, 15:28
Сообщение #125


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



Дело кажется в реализации функции 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

Возможно там делается какая то нормировка.
Go to the top of the page
 
+Quote Post
Grizzzly
сообщение Mar 25 2015, 15:33
Сообщение #126


Знающий
****

Группа: Свой
Сообщений: 565
Регистрация: 22-02-13
Пользователь №: 75 748



Цитата(serjj @ Mar 25 2015, 18:28) *

Нельзя BPSK рассматривать как двумерное созвездие.
Про комплекнсый и вещестыенный шум в справке по AWGN всё написано.
Go to the top of the page
 
+Quote Post
serjj
сообщение Mar 25 2015, 15:40
Сообщение #127


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



В функции 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 рассматривать как двумерное созвездие.

Почему? Это такой же комплексный сигнал как и остальные.
Go to the top of the page
 
+Quote Post
Grizzzly
сообщение Mar 25 2015, 15:44
Сообщение #128


Знающий
****

Группа: Свой
Сообщений: 565
Регистрация: 22-02-13
Пользователь №: 75 748



Цитата(serjj @ Mar 25 2015, 18:40) *
Почему? Это такой же комплексный сигнал как и остальные.

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

Сообщение отредактировал Grizzzly - Mar 25 2015, 15:45
Go to the top of the page
 
+Quote Post
serjj
сообщение Mar 25 2015, 15:54
Сообщение #129


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



Вот в приведенном примере:
Код
hd_bits  = ((real(rx_symb) + imag(rx_symb)) >= 0);

Энергия для решения собирается с обеих координат иначе потеря в энергетике не менее 3 дБ (при условии 100% восстановленной фазы). К bpsk применимы все комплексные мат методы, что и для остальных psk, в т.ч. arg(x), которая не имеет смысла для вещественного/одномерного сигнала. Предлагаю спор о вещественности/материальности/еще-чего-то-там bpsk сигнала закрыть, что бы не засорять тему rolleyes.gif
Go to the top of the page
 
+Quote Post
Grizzzly
сообщение Mar 25 2015, 16:45
Сообщение #130


Знающий
****

Группа: Свой
Сообщений: 565
Регистрация: 22-02-13
Пользователь №: 75 748



Цитата(serjj @ Mar 25 2015, 18:28) *
Результат: ber = 0.07943 ber1 = 0.079298


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

Цитата(serjj @ Mar 25 2015, 18:40) *
Если в первом примере записать так:
Код
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 - Mar 25 2015, 17:14
Go to the top of the page
 
+Quote Post
Grizzzly
сообщение Mar 26 2015, 06:50
Сообщение #131


Знающий
****

Группа: Свой
Сообщений: 565
Регистрация: 22-02-13
Пользователь №: 75 748



Да, вчера вечером затупил про одномерность повернутого BPSK...
Нашел в архиве статью про добавление белого шума к сигнальным отсчетам. Там как раз про 3 дБ говорится.
Прикрепленный файл  10.1109_13.168713.pdf ( 492.69 килобайт ) Кол-во скачиваний: 217

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

Сообщение отредактировал Grizzzly - Mar 26 2015, 06:58
Go to the top of the page
 
+Quote Post
serjj
сообщение Mar 26 2015, 08:44
Сообщение #132


Знающий
****

Группа: Участник
Сообщений: 527
Регистрация: 4-06-14
Из: Санкт-Петербург
Пользователь №: 81 866



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

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

Из неё видно, что в lag=0 АКФ полосового сигнала в 2 раза больше АКФ квадратуры.
В общем у меня много вопросов к статье. Получается, что там ищутся объяснения математическим эффектам, которые не проявляются в реальной жизни. Поправте, если я рассуждаю неверно, всегда готов учиться rolleyes.gif
Go to the top of the page
 
+Quote Post
Grizzzly
сообщение Mar 26 2015, 09:14
Сообщение #133


Знающий
****

Группа: Свой
Сообщений: 565
Регистрация: 22-02-13
Пользователь №: 75 748



Да, при чтении меня тоже кое-что там смущало. Надо будет внимательнее посмотреть.
Сейчас просмотрел десяток учебников по Digital Communication, нигде ничего подобно нет. Есть только описание действительного шума с N0/2 и комплексного с N0.
Go to the top of the page
 
+Quote Post
des00
сообщение Mar 26 2015, 09:28
Сообщение #134


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(Grizzzly @ Mar 25 2015, 23:23) *
Вы должны принимать решение по одномерному созвездию, то есть использовать только одну координату. Поворот не делает созвездие двумерным.

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

Цитата(serjj @ Mar 25 2015, 23:28) *
Дело кажется в реализации функции awgn. Добавляю шум вручную:

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

Цитата(serjj @ Mar 25 2015, 23:40) *
Если в первом примере записать так:
Код
tx_symb = (2*msg-1) + 1i*(2*msg-1);
tx_symb1 = sqrt(2)*real(tx_symb) + 1i*1e-15;


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

Результат удивил. похоже что
Цитата
Возможно там делается какая то нормировка.

вы правы.


--------------------
Go to the top of the page
 
+Quote Post
Grizzzly
сообщение Mar 26 2015, 09:40
Сообщение #135


Знающий
****

Группа: Свой
Сообщений: 565
Регистрация: 22-02-13
Пользователь №: 75 748



Цитата(des00 @ Mar 26 2015, 12:28) *
На каком основании именно должен? Есть квадратурный приемник, обработка идет в двух квадратурах. Как я их поверну для принятия решения дело десятое. Могу вообще перевести в полярные координаты и принимать решение по углу.

С утра понял, что был неправ.
Цитата(des00 @ Mar 26 2015, 12:28) *
Результат удивил. похоже что
Цитата

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

вы правы.

Для комплексного сигнала мощность шума делится пополам между квадратурами, а для вещественного она целиком добавляется к нему.
Можно открыть функции 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 - Mar 26 2015, 09:50
Go to the top of the page
 
+Quote Post

16 страниц V  « < 7 8 9 10 11 > » 
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 12:31
Рейтинг@Mail.ru


Страница сгенерированна за 0.01529 секунд с 7
ELECTRONIX ©2004-2016