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

Отфильтруйте 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);

Постройте глазковую диаграмму для первых 1 000 выборок.

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.

Вычислите отношение сигнал-шум (SNR) в дБ, данном 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