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