Интерполируйте и десятикратно уменьшите Используя фильтр RRC

В этом примере показано, как интерполировать и десятикратно уменьшить сигналы с помощью квадратного корня, фильтры приподнятого косинуса, спроектированные с rcosdesign функция. Этот пример требует программного обеспечения Communications Toolbox™.

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

rolloff = 0.25; % Filter rolloff
span = 6;       % Filter span
sps = 4;        % Samples per symbol
M = 4;          % Size of the signal constellation
k = log2(M);    % Number of bits per symbol

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

rrcFilter = rcosdesign(rolloff,span,sps);

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

data = randi([0 M-1],10000,1);

Примените модуляцию PSK к символам данных. Поскольку размер созвездия равняется 4, тип модуляции является QPSK.

modData = pskmod(data,M,pi/4);

Используя upfirdn функционируйте, сверхдискретизируйте и отфильтруйте входные данные.

txSig = upfirdn(modData,rrcFilter,sps);

Преобразуйте Eb/N0 в ОСШ и затем передайте сигнал через канал AWGN.

EbNo = 7;
snr = EbNo + 10*log10(k) - 10*log10(sps);
rxSig = awgn(txSig,snr,'measured');

Отфильтруйте и проредите полученный сигнал. Удалите фрагмент сигнала с учетом задержки фильтра.

rxFilt = upfirdn(rxSig,rrcFilter,1,sps);
rxFilt = rxFilt(span+1:end-span);

Создайте scatterplot модулируемых данных с помощью первых 5 000 символов.

hScatter = scatterplot(sqrt(sps)* ...
    rxSig(1:sps*5000), ...
    sps,0);
hold on
scatterplot(rxFilt(1:5000),1,0,'bx',hScatter)
title('Received Signal, Before and After Filtering')
legend('Before Filtering','After Filtering')
axis([-3 3 -3 3]) % Set axis ranges
hold off

Figure Scatter Plot contains an axes. The axes with title Received Signal, Before and After Filtering contains 2 objects of type line. These objects represent Before Filtering, After Filtering.

Смотрите также

|