Частота ошибок в битах (BER) и Eb_N0 дискретного сигнала BPSK, прошедшего через интегратор в MATLAB - PullRequest
0 голосов
/ 17 сентября 2018

Я новичок в системах связи, но мне нужно решить этот вопрос. Я был бы признателен за вклад в этом отношении. Прошу прощения, если вы мой вопрос длинный.

У меня есть сигнал BPSK, такой, что вход для фильтра нижних частот (LPF) имеет вид

s(k) = A + nk (read n subscript k where k = 0,1...)

, где A - постоянная, а nk, k = 0,1 .... - независимые средние случайные величины с нулевым средним с дисперсией σ2.
Предположим, что LPF является интегратором вида

y=  1/N { ∑(k=0 to N-1)[s(k)] }  ( read ∑ from k = 0 as lower bound to N-1 as upper bound)

После применения этого фильтра низких частот выходной сигнал y представляет собой тестовую статистику с тонизацией битовой энергии соотношение Eb / N0. Мы знаем, что для БПСК вероятность того, что мы сделаем неправильное решение с использованием этой тестовой статистики Pb = theoretical BER = 0.5 erfc{sqrt(Eb/N0)} Если фильтр с бесконечной импульсной характеристикой (IIR) соответствует

y ̃ (n)= (1 - α)s(n)+ αy ̃  (n - 1),n = 0,1....N-1    where y ̃ (-1) = 0

Как я могу использовать Matlab для имитации сигнала s (k) и операции фильтра, получая y и y ̃ (n) соответственно для N = 8 и построить график имитированной частоты ошибок по битам в сравнении с Eb / N0 и теоретического значения BER в сравнении с Eb / N0 для сравнения. Диапазон Eb / N0 должен составлять от 0 до 10 дБ.

Примечание: для БИХ-фильтра я уже определил α = (N-1) / (N + 1)

Мой код не дает желаемых результатов, так как я не знаю, как имитировать WGN с дисперсией = σ2. Тот, который я кодировал, для нулевой дисперсии. Кроме того, я не знаю, как пропустить мой сигнал через фильтры, упомянутые выше. Может кто-нибудь, пожалуйста, помогите мне исправить этот кусок кода. Если бы вы могли помочь с фрагментом кода, это был бы значительный шаг вперед для меня. Заранее спасибо! Вот мой подход.

clc;
clear all;
close all;
N=8; % Number of Bits to be processed
Eb_N0_dB = 0 : 1: 10;
for i = 1:length(Eb_N0_dB)
    x = rand(1,N)>0.5;  %generating 0,1s
    xpolar = 2*x -1; %BPSK modulation
    noise = 1/sqrt(2)*[randn(1,N) + j*randn(1,N)]; %noise
    y = xpolar + 10^(-Eb_N0_dB(i)/20)*noise;
    xdecode = real(y)>0;  %receiver hard decison decoding
    nErr(i) = size(find([x - xdecode]),2);
end
simulatedBER = nErr/N; %simulated BER
theoryBER = 0.5erfc(sqrt(10.^(Eb_N0_dB/10))); % theoretical BER
%plot
figre
semilogy(Eb_N0_dB,simulatedBER,'bs-');
hold on
semilogy(Eb_N0_dB,theoryBER,'mx-');
axis([0 10 10^-5 0.5])
grid on
...