Re: Реализация режекторного фильтра (SDR)
От: kov_serg Россия  
Дата: 07.04.25 16:17
Оценка: 21 (2)
Здравствуйте, prrt, Вы писали:

P>
P>    bb =    (re * s.re + im * s.im,               -re * s.im + im * s.re);
P>    estim = (bb.re * k + estim.re * (1-k),        bb.im * k + estim.im * (1-k));
P>    sub =   (estim.re * s.re – estim.im * s.im,   estim.re * s.im + estim.im * s.re);
P>    out =   (re – sub.re,                         im – sub.im);
P>


P>Вопрос: что означают указанные формулы для вычисления bb и sub? Где можно почитать теорию применительно к тому, как на с++ написать режекторный фильтр? И вообще, теорию режекторного фильтра применительно к IQ сигналам. Каким образом, «на пальцах», указанные вычисления удаляют пик спектра?


Тут вроде всё очевидно. Вот смотри пусть у тебя есть вектор a и орт s.
мы хотим убрать компоненту s из a. a это a0*s+a1*ns где ns ортогонален s, т.е. (ns,s)=0
r=a-(a,s)*s
где (a,s) это скалярное произведение. только вместо скалярного произведения используется сглаженное значение
e=e*q+(a,s)*(1-q)
r=a-(e*s)*s

Конкретнее:
a=(re,im) s=(re,im) e=estim=(re,im) r=out=(re,im) — комплексные числа

bb = <a|s> = conj(a)*b
e = e*(1-k) + k*bb
sub = e*s
out = a — sub

где: k=1-exp(ln(th)/n)
n-длинна истории, th=1e-3 порог (например шум к полезному сигналу),т.е. вклад за n шагов упадет до th.
Если s периодический сигнал то n должно быть порядка периода, например n=7*T
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.