Изучение цифровой квадратурной модуляции
Цель работы: использование глазковой диаграммы (eyediagram) и диаграммы рассеяния (scatterplot) для анализа квадратурной модуляции сигнала в системе связи.
Задание на выполнение работы:
1. Воспроизвести в пакете MATLAB программу применения функций scatterplot и eyediagram для анализа модулированного сигнала 2. Применить функций scatterplot и eyediagram для анализа модуляции заданного сигнала 3. Разработать для квантованной исходной последовательности (считать его сигналом в кодировке РАМ) согласованный фильтр. Рассчитать значение энергии в додетекторной точке z. Принять значение порога обнаружения сигнала равным z/2 и рассчитать, при каком отношении сигнал/шум сигнал не будет обнаруживаться Введем следующие обозначения: N- размер выборки, приходящийся на один след; Fc – несущая частота; Fs – частота взятия отсчетов; , где BW - полоса пропускания модулированного сигнала; Fd – частота следования символов. Symb - количество передаваемых символов; M – размерность алфавита кодировки;
N = 16; Fd = 1; Fs = N * Fd; Delay = 3; Symb = 60; M = 16; %определение переменных msg_orig = randsrc(Symb,1,[0:M-1],4321); % генерация случайных чисел в рамках алфавита М msg_tx = modmap(msg_orig,Fd,Fd,'qask',M); %квадратурная модуляция x = complex(msg_tx(:,1),msg_tx(:,2)); %создание комплексного результата [y, t] = rcosflt(x, Fd, Fs); % пропускание через косинусоидальный фильтр plot(t, real(y)); pause
h1 = eyediagram(y, N); % Создание глазковой диаграммы % Перемещение фигуры в правую сторону экрана ss = get(0,'ScreenSize'); fp = get(h1,'position'); set(h1,'position',[ss(3)*.99-fp(3) ss(4)*.9-fp(4) fp(3:4)]); pause Глазковая диаграмма может также использоваться для графического представления реальной части сигнала.. yReal является реальной частью синфазной компоненты y. Глазковая диаграмма различает, что сигнал реальный и создает только одну пару осей.
Создание глазковой диаграммы. yReal = real(y); h2 = eyediagram(yReal, N); Предыдущая глазковая диаграмма представляла графически всю переменную у. Однако нам не интересны хвостовые части у, которые содержат ранние и поздние частичные отклики фильтра. Следующие графики демонстрируют глазковую диаграмму переменной уу, которая не включает “хвосты” у. Теперь характеристики модуляции становятся явными. Каждая синфазная и квадратурная составляющая 16-разрядной QAM занимает 4 отличающихся уровней в центре диаграммы с небольшим перекрытием между уровнями
% Создание глазковой диаграммы. yy = y(1+Delay*N:end-Delay*(N+2)); h3 = eyediagram(yy, N);
Управление графическим окном close(h2(ishandle(h2))) fp = get(h3,'position'); set(h3,'position',[ss(3)*.99-fp(3) ss(4)*.9-fp(4) fp(3:4)]); pause
% Глазковая диаграмма может также представлять несколько символов на след. Следующая фигура показывает два символа на след.
% Создание глазковой диаграммы NumSym = 2; h4 = eyediagram(yy, N*NumSym, NumSym);
% Управление графическим окном close(h3(ishandle(h3))) fp = get(h4,'position'); set(h4,'position',[ss(3)*.99-fp(3) ss(4)*.9-fp(4) fp(3:4)]); pause
% Вы можете построить диаграмму таким образом, чтобы открытая часть глаза не находилась в центре осей. Следующую программу можно назвать представлением закрытой части глаза в центре осей.
% Создание диаграммы. h5 = eyediagram(yy, N, 1, N/2);
% Управление графическим окном close(h4(ishandle(h4))) fp = get(h5,'position'); set(h5,'position',[ss(3)*.99-fp(3) ss(4)*.9-fp(4) fp(3:4)]); pause Функция SCATTERPLOT создает диаграмму рассеяния синфазной компоненты в сравнении с квадратурной компонентой сигнала, которая строится в соответствии с величиной выборки на символ, N. Результирующий график показывает принятый сигнал в соответствии с набором символов. Когда канал не зашумлен и при отсутствии помех, эти символы идентичны переданным.
% Создание диаграммы рассеяния. h6 = scatterplot(yy, N);
% Управление графическим окном. close(h5(ishandle(h5))); fp = get(h6,'position'); set(h6,'position',[ss(3)*.99-fp(3) ss(4)*.9-fp(4) fp(3:4)]); pause Функция SCATTERPLOT выполняется дважды для создания графика. Голубая линия представляет синфазную компоненту траектории принятого сигнала в сигнальном пространстве. Синие точки представляют выборку сигнала. Этот график демонстрирует, что даже при движении сигнала в сигнальном пространстве, значения сигнала соотвествуют исходному сигналу.
% Создание диаграммы рассеяния h7 = scatterplot(yy, 1, 0, 'c-'); hold on; scatterplot(yy, N, 0, 'b.',h7); hold off; % Управление графическим окном. close(h6(ishandle(h6))); fp = get(h7,'position'); set(h7,'position',[ss(3)*.99-fp(3) ss(4)*.9-fp(4) fp(3:4)]); pause
Использование этих функций для анализа систем связи. Следующая программа показывает зашумленный сигнал (красная линия). Хотя он отличается от незашумленного сигнала (синяя линия), все же тяжело определить воздействие шума на сигнал. Отношение сигнал/шум (SNR) для зашумленного сигнала равно 15 dB.
%Закрытие графического окна close(h7(ishandle(h7)));
% Создание нового графика. SNR = 15; sig_rx1 = awgn(msg_tx,SNR,'measured',1234,'dB'); sig_rx = complex(sig_rx1(:,1),sig_rx1(:,2)); [fsig_rx, t2] = rcosflt(sig_rx, Fd, Fs); tfsig_rx = fsig_rx(1+Delay*N:end-Delay*(N+1),:); plot(t, real(y),'b-', t2, real(fsig_rx),'r-');
pause зашумленный сигнал
Следующие графики представляют индикаторные диаграммы для оригинального сигнала (синие линии) и зашумленного сигнала (красные линии). Диаграммы ясно показывают изменение принятого сигнала в сравнении с передаваемым в соответствии с тем шумом, который добавился к сигналу.
% Создание индикаторной диаграммы. h(1) = eyediagram(yy, N,1); h(2) = eyediagram(tfsig_rx, N,1,0,'r-');
% перемещение диаграммы к стороне экрана fp = get(h(1),'position'); set(h(1),'position',[ss(3)*.99-fp(3) ss(4)*.9-fp(4) fp(3) fp(4)]); set(h(2),'position',[ss(3)*.86-fp(3) ss(4)*.65-fp(4) fp(3) fp(4)]);
Следующие графики являются представлением диаграммы рассеяния исходного сигнала (голубые точки) и зашумленного сигнала (красные точки). Диаграмма рассеяния ясно показывает отличия переданного сигнала от принятого.
% Создание диаграммы рассеяния h(3) = scatterplot(yy, N, 0, 'b.'); h(4) = scatterplot(tfsig_rx, N, 0, 'r.');
% перемещение графика к низу экрана fp = get(h(3),'position'); set(h(3),'position',[ss(3)*.01 ss(4)*.01 fp(3) fp(4)]); set(h(4),'position',[ss(3)*.3 ss(4)*.02 fp(3) fp(4)]); pause
%% Следующий график представляет сигнал, принятый при уровне сигнал/шум 20 dB (малиновая линия). Изменения, вызванные шумом, теперь меньше, чем в предыдущем сигнале (SNR = 15 dB). В этом случае индикаторная диаграмма и диаграмма рассеяния нужны даже больше для определения характеристик модуляции.
% Закрытие всех графических окон close(h(ishandle(h)));
% График переданного сигнала. SNR = 20; sig_rx1 = awgn(msg_tx,SNR,'measured',4321,'dB'); sig_rx = complex(sig_rx1(:,1),sig_rx1(:,2)); [fsig_rx2, t2] = rcosflt(sig_rx, Fd, Fs); tfsig_rx2 = fsig_rx2(1+Delay*N:end-Delay*(N+1),:); plot(t, real(y),'b-', t2, real(fsig_rx2), 'm-'); pause
Следующие графики представляют индикаторные диаграммы первого зашумленного сигнала (красные линии) и второго зашумленного сигнала (малиновые линии). Они ясно показывают, что изменения во втором принятом сигнале меньше, чем в первом. Также изображены два зашумленных сигнала.
% Создание графиков. plot(t, real(fsig_rx),'r-',t2,real(fsig_rx2),'m-'); h(1) = eyediagram(tfsig_rx, N,1); h(2) = eyediagram(tfsig_rx2, N,1,0,'r-'); % Управление графическими окнами. fp = get(h(1),'position'); set(h(1),'position',[ss(3)*.99-fp(3) ss(4)*.9-fp(4) fp(3) fp(4)]); set(h(2),'position',[ss(3)*.86-fp(3) ss(4)*.65-fp(4) fp(3) fp(4)]); pause %%
Следующие графики показывают диаграммы рассеяния первого зашумленного сигнала (красные точки) и второго зашумленного сигнала (малиновые точки). Эти Диаграммы рассеяния ясно показывают, что изменения во втором принятом сигнале меньше, чем в первом.
% Создание диаграмм рассеяния. h(3) = scatterplot(tfsig_rx, N, 0, 'r.'); h(4) = scatterplot(tfsig_rx2, N, 0, 'm.');
% Управление графическими окнами. fp = get(h(3),'position'); set(h(3),'position',[ss(3)*.01 ss(4)*.01 fp(3) fp(4)]); set(h(4),'position',[ss(3)*.3 ss(4)*.02 fp(3) fp(4)]); pause
Использование анимации для показа временных ошибок.
% Закрытие всех графических окон. close(h(ishandle(h)));
% Создание и анимация графиков. plot(t2,real(fsig_rx2),'m-'); [h(1), h(2)] = animatescattereye(tfsig_rx2,N,.1,N,'lin',-1); pause
Следующая программа анимации индикаторной диаграммы и диаграммы рассеяния представляет эффект различного начала отсчета в приемнике. Параметр начала отсчета варьируется относительно исходного.
% Закрытие всех графических окон. close(h(ishandle(h)));
% Создание и анимация графика plot(t2,real(y),'b-'); animatescattereye(yy,N,.1,17,'lr',0); pause
|