В этом примере показано, как интерполировать и десятикратно уменьшить сигналы с помощью квадратного корня, повышенные фильтры косинуса, спроектированные с 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