В этом примере показано, как интерполировать и прореживать сигналы с помощью квадратно-корневых косинусных фильтров, разработанных с помощью 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);
Создайте 10000 символов данных с помощью 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 в SNR и затем передайте сигнал через канал 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);
Создайте точечную диаграмму модулированных данных, используя первые 5000 символов.
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
