LINUX.ORG.RU

Имитационная модель 16QAM


0

1

Интересно, занимался ли кто-то здесь имитационным моделированием модуляции 16QAM (она же КАМ-16)? Если да, хотелось бы посмотреть на готовые модельки (Java/C, например) и поболтать с таким человеком.

Лабораторка? :-) Сначала надо разобраться в фазовой и амплитудной модуляциях - и тогда всё будет прозрачно. Что конкретно тебя интересует? Какое моделирование? Модуляция - тракт - демодуляция ? Нужны значения BER для разных ОСШ в моделируемой системе?

rip86oz
()
Ответ на: комментарий от rip86oz

Диплом.

Интересует больше всего конкретно значения сигмы для нормальной случайной величины, добавляемой к квадратурам (типа имитация шума).

А вообще интересует модель в целом. Хочу сравнить с тем, что получилось у меня.

post-factum ★★★★★
() автор топика
Ответ на: комментарий от post-factum

На уровне диплома наврятли могу подсказать с КАМ, и тем более с теорией. Знаешь ты наверное не меньше меня. (у меня был DPSK * ПСП с реальной моделью приемо-передатчика)

В чём могу тебе помочь - не представляю. :-\

rip86oz
()
Ответ на: комментарий от rip86oz

Если остался код — было бы интересно изучить.

Если интересует мой, смотри здесь.

BPSK, QPSK, 8PSK теории соответствуют. А вот КАМ даже не с чем сравнивать, аспиранты только пытаются построить вменяемую аналитическую модель, а я вот рыскаю в поисках всякого разного полезного и не очень хлама.

post-factum ★★★★★
() автор топика
Ответ на: комментарий от post-factum

Я диплом делал в LabView, и там мало чего для тебя интересного, т.к. построением аналитической модели мне заниматься не пришлось, да и прога без железа работать не будет.

Посмотрел некоторые книженции по которым учился (Прокис - Digital Communications и Скляр - Цифровая связь) - там про КАМ стандартный набор. Никаких аналитических зависимостей SER от (чего?) ОСШ(?) не нашёл.

И я не понимаю что ты хочешь получить в конце концов - аналитическую зависимость SER \ BER от ОСШ ?

В исходниках посмотри ModellingController.java - там есть строки типа «Моделювання» и «Обчислення». :-)

И двойной close, типа QAM16aFileBufferedWriter.close(); - «не айс»

На курсачах, моделировал в MatLab - делал просто - цикл по отсчётам. В цикле были функции - генерация сигнала случайных информационных битов, модуляция и перенос на несущую, добавление шума, снос на нулевую и демодуляция, проверка на ошибки.

rip86oz
()
Ответ на: комментарий от post-factum

>Интересует больше всего конкретно значения сигмы для нормальной случайной величины, добавляемой к квадратурам (типа имитация шума).

в матлабе есть готовые функции для этого. в octave тоже были

registrant ★★★★★
()
Ответ на: комментарий от post-factum

>Да, нужна зависимость SER от SNR.

и для этого тоже есть

registrant ★★★★★
()
Ответ на: комментарий от registrant

Долго объяснять. С нуля строятся обе модели — аналитическая и имитационная, а потом сравниваются между собой.

post-factum ★★★★★
() автор топика
Ответ на: комментарий от post-factum

>Долго объяснять

а ты попробуй. я этих моделей уйму делал. правда, на сях давно, но проблемы не вижу код с матлаба в сишный перегнать

registrant ★★★★★
()
Ответ на: комментарий от registrant

Руководитель недоволен существующими моделями, поэтому хочет строить всё с нуля сам. Аналитикой занимается аспирант, имитатором — я.

И вообще, вопрос не в этом. Если можешь рекомендовать нормальные матлабовские модели — давай, лишними точно не будут.

post-factum ★★★★★
() автор топика
Ответ на: комментарий от post-factum

для AWGN см. berawgn. или канал другой? вообще, какой смысл зацикливаться на QAM? там же элементарно пересчитывается из BPSK. пример для BPSK

 %This program simulates BER of BPSK in AWGN channel%
 clear all; close all; clc;
 num_bit=100000;                          %Signal length 
 max_run=20;                              %Maximum number of iterations for a single SNR
 Eb=1;                                    %Bit energy
 SNRdB=0:1:9;                             %Signal to Noise Ratio (in dB)
 SNR=10.^(SNRdB/10);                      

 hand=waitbar(0,'Please Wait....');
 for count=1:length(SNR)                  %Beginning of loop for different SNR
     avgError=0;
     No=Eb/SNR(count);                    %Calculate noise power from SNR
     
     for run_time=1:max_run               %Beginning of loop for different runs
         waitbar((((count-1)*max_run)+run_time-1)/(length(SNRdB)*max_run));
         Error=0;
         
         data=randint(1,num_bit);         %Generate binary data source
         s=2*data-1;                      %Baseband BPSK modulation
         
         N=sqrt(No/2)*randn(1,num_bit);   %Generate AWGN
         
         Y=s+N;                           %Received Signal
         
         for k=1:num_bit                  %Decision device taking hard decision and deciding error
             if ((Y(k)>0 && data(k)==0)||(Y(k)<0 && data(k)==1))
                 Error=Error+1;
             end
         end
        
         Error=Error/num_bit;             %Calculate error/bit
         avgError=avgError+Error;         %Calculate error/bit for different runs        
     end                                  %Termination of loop for different runs
     BER_sim(count)=avgError/max_run;     %Calculate BER for a particular SNR                                  
 end                                      %Termination of loop for different SNR 
 BER_th=(1/2)*erfc(sqrt(SNR));            %Calculate analytical BER
 close(hand);
 
 semilogy(SNRdB,BER_th,'k');              %Plot BER
 hold on
 semilogy(SNRdB,BER_sim,'k*');
 legend('Theoretical','Simulation',3);
 axis([min(SNRdB) max(SNRdB) 10^(-5) 1]);
 hold off

registrant ★★★★★
()
Ответ на: комментарий от registrant

Элементарного пересчёта из BPSK быть не может, так как QAM имеет неоднородную помехоустойчивость по всему сигнальному созвездию.

А канал будет потом разный подставляться. С замираниями всякими.

post-factum ★★★★★
() автор топика
Ответ на: комментарий от post-factum

>Элементарного пересчёта из BPSK быть не может

может

А канал будет потом разный подставляться. С замираниями всякими.

вот это и есть самое главное

registrant ★★★★★
()
Ответ на: комментарий от registrant

Я тебе после защиты свой диплом пришлю =).

post-factum ★★★★★
() автор топика

Кастую сюда мклауда. Пусть он высрет что-нибудь про то, что «Имитационное моделирование» — говно.

anonymous
()
Ответ на: комментарий от post-factum

> Да, нужна зависимость SER от SNR.

Аналитикой занимается аспирант, имитатором — я

Тогда не вижу проблемы в моделировании. Если надо проверить результаты, то Яндекс тебе в помощь :-)

Мне вот это попалось первым делом: http://kedah.ru/pdf2/news/press/files/infoandspace.pdf

rip86oz
()
Ответ на: комментарий от rip86oz

Да мне тоже разные зависимости попадались для 16QAM, причём они действительно разные, и непонятно, кому верить. Поэтому сами строим.

post-factum ★★★★★
() автор топика
Ответ на: комментарий от post-factum

Возможно были разные полосы\фильтрация.

У меня была как раз с этим была путаница. Увеличивая частоту дискретизации шум начинает «расползаться»(если задаётся мощность, а не СПМ) по полосе, и получается, что чем выше частота дискретизации при моделировании - тем ниже SER\BER.

rip86oz
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.