Ошибка вычисления вероятности ошибки приема сигнала DBPSK
Здравствуйте, коллеги!
Мне нужна ваша помощь!
Я тратил много времени на эту задачу, но не получил правильный результат.
Задача такая: моделирование приема сигнала DBPSK при наличии белого гауссовского шума. то есть на входе приемника будет смесь сигнала DBPSK + белого гауссовского шума.
Опорный сигнал будет принимаемый сигнал на длительности символа Ts. Потом на интегратор и результат сравнить с порогом. Видно, что не применить полосовой фильтр вероятность ошибки очень большая.
Если применить полосовой фильтр, то вероятность ошибки выигрыш, чем без фильтра. Но сравнить с теоретической вероятности ошибки, то две вероятности не равны.
Скажите, в чем Я ошибся. Я думал, если Мы применим фильтр, то он может подавлять не только шум и сигнал. Тогда надо пересчитать отношение сигнал/шум на выходе фильтра. и построить вероятность ошибки от этого отношения? (Если так, то скажите, как измерить отношение сигнал/шум на выходе фильтра).
Помогите, пожалуйста!
Заранее, Я благодарю Вас за помощь!
С уважением, Зунг.
Комментарии
Как настраивали канал связи?
Спасибо Вам за ответ!
Формировал сигнал DBPSK. На каналах связи кроме сигнала, присутствует белый гауссовский шум. Принимаемый сигнал будет сигнал DBPSK + белый гауссовский шум.
Форма БГШ: sigma*randn(1,N); Если хотим построить вероятность ошибки от ОСШ в дБ.
То надо найти sigma от ОСШ (проведен в файле форде, определим СКО шума).
Для сигнала BPSK(2-ФМ) теоретическая вероятность ошибки абсолютно совпадает с имитационной, а DBPSK различается много.
Простите, пожалуйста! Если Я не правильно понял ваш вопрос.
Подскажите, пожалуйста! Что сделать с этой проблемой?
С уважением, Зунг.
Сделайте модуль в Simulink, там будет проще отловить ошибку.
p.s. Если график BER похож на правду, но кратно отличается от теоретического, значит Вы где-то забыли или перепутали коэффициет, например, длительность символа и т.д.
Спасибо Вам!
Я думаю, в матлабе более нагляднее, как формировать (модуляция) сигнал, шум потом процесс демодуляции сигнала. и Задача требуется выполнить на Матлабе. В Simulink? все блоки закрытые, как они построены, трудно объяснить.
Подскажите, как написать алгоритм наколение сигнала с фильтром низких частот, пожалуйста!
Накопить сигнала с ФНЧ, надо вычислить светрку импульсной характеристики ФНЧ и и модуля сигнала, или простно пропускать сигнал через ФНЧ с командой filter(b,a, сигнал)?
Я хотел заменить интегратор на ФНЧ, но еще ничего не получил.
C уважением, Зунг.
Воспользуйтесь
прям так и надо набрать в командной строке. Сделайте там фильтр с нужными Вам характеристиками и экспортируйте его в Matlab в виде коэффициентов или системного объекта.
Попрошу Вас, посмотрите мою программу, пожалуйста!
Писал. но еще не получал.
Подскажите, где надо поправить в программе.
Коэффиенты фильтра, потом Я выбер. Но желаю получить правильные алгоритмы в Матлабе.
С уважением, Зунг.
A0 =1;
N = 108000;
c = randi([0, 1], 1, N);
d = zeros(1, N);
d(1) = c(1);
for n = 2:length(c)
d(n) = xor(c(n), d(n-1));
end
fc = 10; % часота несущего колебания
fz = 1; % частота символов
fd = 20*fc; % чатоста дискретизации
td = 1/fd; % период дискретизации
t = 0 : td : N/fz-td; % массив времени
M = fd/fz; % количество отсчетов на бит
Z = repmat(d, M, 1); % повторяем последовательность по строкам
Z = Z(:)'; % вытягиваем по столбцам
S1 = A0.*sin(2*pi*fc*t + Z*pi); % сигнал с БФМ
% белый гауссовский шум
sigma = 2.24;
noise = sigma .* randn(1, length(t));
% Сумма сигнала DPSK + белый гауссовский шум
S2 = S1 + noise; % Фильтрация шума
[b,a] = butter(2,[fc-1 fc+1]/(fd/2));
S3 = filtfilt(b,a,S2); % Задержанный принимаемый сигнала на тактовой интервал сигнал Ts
S4=[zeros(1, 1 * M) S3(1 : end - 1* M)]; %сравнить результат после интегратора с порогом
S5 = S3 .* S4;
tau = 5e-6; %постоянная времени фильтра
[y,x] = butter(2,2/tau/pi/fd); %расчет коффициентов полиномов функции переачи ФНЧ
ik = impz(y,x); %расчет импульсной характеристики ФНЧ
%f = 0.1 .* exp(-t .* fs); %или надо по этой команде для ИХ ФНЧ с fs (частота среза)
% накодение в ФНЧ и сравнить результат с порогом
SS = filter(y,x,S5); %фильтрация ФНЧ
%SS = conv(S5,f); %или надо вычислить сверту сигнала с ИХ ФНЧ
for n = 2 : N
if SS(n .* fd) < 0;
d(n) = 1;
else d(n) = 0;
end
end
% Вероятность ошибки
error = sum(c(2:end) ~= d(2:end)) / (N-1);
При рассчете ОСШ входного сигнала вы фильтровали шум (полосой сигнала)? Иначе ОСШ будет некорректным.
Спасибо Вам!
Вы правильно подсказали, надо учитывать после фильтрации шума. и получили результаты ближе к теории. Сейчас, наша трудность в решении с сигнала DQPSK. Прием сигнала DQPSK чуть по разной с DBPSK. Мы тратили много времени, но не могли решать проблему с приемом сигнала DQPSK.
Если Вы нам помогите, Я отправлю программу DQPSK.
Заранее спасибо Вам за помощь!
Программу не надо - у меня своих хватает.
Прием сигнала DQPSK я делал так же как QPSK, в конце просто дифкод снимается по таблице кодирования символов.
Та схема, что у вас приведена (где, я так понимаю, вы получаетет разностный сигнал сразу после фильтра) - возможна для моделирования, но в ней не учтена тактовая и частотная синхронизация. Т.е. с реальным сигналом работать не будет.
Спасибо Вам за ответ!
Схема автокорреляционного демодулятора DQPSK, в которой Мы исследовали.
Честно говоря, Мы много думали, решали поставить полосу входного фильтра и тау ФНЧ (другой способ сравить и выводить канальные символы). Но результаты всегда хуже много, чем теория. Спросили людей, но мало кто знает про этом.
Подскажите, что надо поправить программу?
Если наш подход не правильно.
У нас большая просьба к Вам. Вы можете отправить Нам вашу программу?
Мы благодарим Вас за помощь!
Напишите на форуме программе, или отправите на адрес: codonmaimai92@gmail.com (если есть какие условия, напишите на этом адресе, пожалуйста!)
Вы не поймете мою программу. Там решающее устройство с адаптивным фильтром и ФАПЧ.
У вас решающее устройство, я так понимаю, работает по максимуму (на длинне символа) разности мгновенной фазы Z.
Для того, чтобы получить результаты, близкие к теории, вам нужно иметь согласованные формирующие фильтры на передатчике и приемнике (ваши ФНЧ и ФНЧ передатчика). Обчно используют sqrt-rolloff (корень из приподнятого cos), их описание есть в учебниках ЦОС.
Если у вас в приемнике произвольный фильтр (типа sin(x)/x с окном) - то результат будет хуже теории.
Спасибо Вам! Я попробую. Простите, пожалуйста! Если Я не правильно говорю. Нам очень нужна Ваша программа, если Вы не против. Хотим посмотреть и что то обязательно применить в нашем исследовании.
С уважением, Зунг.
Моя "программа" на С++ - это комплекс мониторинга сигналов беспроводной связи.
Если вы студент или аспирант - гораздо полезнее для вас будет разобраться и написать такой обработчик самому.
Спасибо Вам! Я напишу на Матлабе и если что не так получу. Попрошу Вас, помогите поправить, пожалуйста!