Проверка программы одночастотного адаптивного режекторного фильтра на Матлабе
15.11.2023
Я моделировал канал связи с сигналом BPSK + АГБШ + гамоническая помеха. Для режекции грамонической помехи, Я применял одночастотный адаптивный режекторный фильтр. Одна проблема была на выходе фильтра не получал сигнал BPSK без помехи.
Скажите, пожалуйста! Правильно ли Я реализовать алгоритм фильтра на Матлабе?
Спасибо большое!
clc; clear all; close all;
A0 = 1;
N = 100;
fc = 10;
fz = 1;
fd = 20*fc;
td = 1/fd;
M = fd/fz;
b = randi([0 1], 1, N);
Z = repmat(b,M,1);
SNR = 0;
miu = 0.5;
Z = Z(:)';
Z = 2*Z - 1;
% сигнал BPSK
t = 0 : td : N/fz-td;
S1 = Z.*A0 .* sin(2*pi*fc*t);
S1(abs(S1) < 10^-10) = 0;
S4 = A0*sin(2*pi*fc*t);
S4(abs(S4) < 10^-10) = 0;
S41 = reshape(S4,fd,N)';
% формирование белого гауссовского шума
sigma = (A0/2) .* sqrt((fz * fd)/(10 .^ (SNR/10)));
noise = sigma .* randn(1,length(t));
noise = 0;
% формирование гармонической помехи
S2 = miu .* A0 .* sin(2*pi*fc*t + (2*pi/360) * (ceil((1:numel(S1))/M) - 1));
S2(abs(S2) < 10^-10) = 0;
% выходный сигнал
d = S1 + S2 + noise;
% одночастотный адаптивный фильтр
N = length(t);
w1 = 0.1;
w2 = 0.1;
e = zeros(1,N);
y = zeros(1,N);
u = 0.1/2000;
x1 = cos(2*pi*fc*t);
x2 = sin(2*pi*fc*t);
for i = 1:N
y(i) = w1*x1(i) + w2*x2(i);
e(i) = d(i)- y(i);
w1 = w1 + u*e(i)*x1(i);
w2 = w2 + u*e(i)*x2(i);
end
figure
subplot(4,1,1);
plot(t,S1);
title('Signal BPSK');
subplot(4,1,2);
plot(t,d);
title('Signal BPSK + noise + interference');
subplot(4,1,3);
plot(t,e);
title('Filtered Signal');
subplot(4,1,4);
plot(t,y);
Файлы
- bpsk_filter.m
Ответы
А когда noise = 0, то получали?
И SNRу вас точно 0?
Я ошибка. Если в начале SNR = 0, то вниз надо удалить строку noise = 0.
Я пересделал, но на выходе получил не чистый сигнал.
1. SNR для современных АЦП 80-100 дБ.
Добавим сюда тракт приема (или измерения что тма у вас на самом деле) и датчик.
Примерно 40-50 дБ можное задать.
Если делаете "на коленках" то меньше.
2. Он чистым и не должен быть.
3. У вас как-то должна определяться скорость адаптации. Однако этого я вам уже подсказать не могу. Надо задачу знать.
4.Почему u=0.1/2000,объяснитьможете?
5.Что такое гармоническая помеха? Если это реально помеха, то амплитуда её что-то очень большая задана.
Даже когда я переделал его, сигнал, который он выдавал, был мутным.
basketball stars