Этот пример показов, как интерполировать и децимировать сигналы, используя квадратный корень, фильтрами приподнятого косинуса разработанный с 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
function, upsample и фильтрация входных данных.
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);
Создайте скаттерплот модулированных данных с помощью первых 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