exponenta event banner

Формирование импульса с помощью фильтра с увеличенным косинусом

Фильтрация 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.

Вычислите отношение сигнал/шум (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