Формирование импульсов с использованием фильтр приподнятого косинуса

Пропустите сигнал 16-QAM, используя пару квадратных корневых приподнятых косинусоидных согласованных фильтров. Постройте график глазковой диаграммы и графика поля точек сигнала. После передачи сигнала через канал AWGN вычислите количество битовых ошибок.

Установите параметры симуляции.

M = 16; % Modulation order
k = log2(M); % Bits/symbol
n = 20000; % Transmitted bits
nSamp = 4; % Samples per symbol
EbNo = 10; % Eb/No (dB)

Установите параметры фильтра.

span = 10; % Filter span in symbols
rolloff = 0.25; % Rolloff factor

Создайте фильтр передачи и приема приподнятого косинуса с помощью ранее определенных параметров.

txfilter = comm.RaisedCosineTransmitFilter('RolloffFactor',rolloff, ...
    'FilterSpanInSymbols',span,'OutputSamplesPerSymbol',nSamp);

rxfilter = comm.RaisedCosineReceiveFilter('RolloffFactor',rolloff, ...
    'FilterSpanInSymbols',span,'InputSamplesPerSymbol',nSamp, ...
    'DecimationFactor',nSamp);

Постройте график импульсной характеристики hTxFilter.

fvtool(txfilter,'impulse')

Figure Filter Visualization Tool - Impulse Response contains an axes and other objects of type uitoolbar, uimenu. The axes with title Impulse Response contains an object of type stem.

Вычислите задержку через согласованные фильтры. Групповая задержка составляет половину диапазона фильтра через один фильтр и, следовательно, равна диапазону фильтра для обоих фильтров. Умножьте на количество битов на символ, чтобы получить задержку в битах.

filtDelay = k*span;

Создайте счетчик частоты ошибок Системный объект. Установите ReceiveDelay свойство для расчета задержки через согласованные фильтры.

errorRate = comm.ErrorRate('ReceiveDelay',filtDelay);

Сгенерируйте двоичные данные.

x = randi([0 1],n,1);

Модулируйте данные.

modSig = qammod(x,M,'InputType','bit');

Фильтрация модулированного сигнала.

txSig = txfilter(modSig);

Постройте график глазковой диаграммы первых 1000 выборок.

eyediagram(txSig(1:1000),nSamp)

Figure Eye Diagram contains 2 axes. Axes 1 with title Eye Diagram for In-Phase Signal contains an object of type line. This object represents In-phase. Axes 2 with title Eye Diagram for Quadrature Signal contains an object of type line. This object represents Quadrature.

Вычислите отношение сигнал/шум (ОСШ) в дБ по данным EbNo. Переданный сигнал передается через канал AWGN с помощью awgn функция.

SNR = EbNo + 10*log10(k) - 10*log10(nSamp);
noisySig = awgn(txSig,SNR,'measured');

Фильтрация сигнала с шумом и отображение его графика поля точек.

rxSig = rxfilter(noisySig);
scatterplot(rxSig)

Figure Scatter Plot contains an axes. The axes with title Scatter plot contains an object of type line. This object represents Channel 1.

Демодулируйте отфильтрованный сигнал и вычислите статистику ошибок. Задержка через фильтры учитывается ReceiveDelay свойство в errorRate .

z = qamdemod(rxSig,M,'OutputType','bit');

errStat = errorRate(x,z);
fprintf('\nBER = %5.2e\nBit Errors = %d\nBits Transmitted = %d\n',...
    errStat)
BER = 1.85e-03
Bit Errors = 37
Bits Transmitted = 19960