Интерполируйте и десятикратно уменьшите Используя фильтр 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,'g.');
hold on
scatterplot(rxFilt(1:5000),1,0,'kx',hScatter)
title('Received Signal, Before and After Filtering')
legend('Before Filtering','After Filtering')
axis([-3 3 -3 3]) % Set axis ranges
hold off

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

|