arctan (imag(out)/real(out)) plus some filtering to remove out of band
noise (it would be nice also to make sure you avoid discontinuities
inherent in the arctan function)…
Achilleas
arctan (imag(out)/real(out)) plus some filtering to remove out of band
noise (it would be nice also to make sure you avoid discontinuities
inherent in the arctan function)…
Achilleas
Achilleas A. wrote:
arctan (imag(out)/real(out)) plus some filtering to remove out of band
noise (it would be nice also to make sure you avoid discontinuities
inherent in the arctan function)…
I would like to add that you should use four quadrant arctan, i.e. add
or subtract pi to the above if the real part is negative.
Regards
/Mikael Olofsson
Universitetslektor (Associate Professor)
Linkpings universitet
Just to make a note on the more theoretical aspect of this problem:
If you want to avoid all complications arising from the discontinuous
arctan, you can (and technically/theoretically you should)
work with the actual incoming signal r(t)=exp(j theta(t)) + n(t)
and its hypothesized estimate s_hat(t) = exp(j theta_hat(t)),
and minimize their Euclidean distance (over a horizon T) under the
constraints (bandwidth) of your signal theta_hat(t).
What this boils down to is:
find theta_hat(t) satisfying the BW constraints that maximizes
the quantity sum_{t=1}^T |r(t)| cos[arg(r(t))-theta_hat(t)].
BTW, the fine point above is that you cannot set theta_hat(t)=arg(r(t)),
because this assignment does NOT satisfy the BW constraints of your
initial signal theta(t) or theta_hat(t).
This maximization problem is solved APPROXIMATELY using a PLL which is
implemented in gnuradio in various forms.
Also the algorithms suggested earlier (evaluate arctan() and smooth it)
can be thought of as approximate solutions of the above problem.
Achilleas
Which, of course is completely true.
/Mikael
Could you elaborate on this statement?
BTW, the fine point above is that you cannot set theta_hat(t)=arg(r(t)),
because this assignment does NOT satisfy the BW constraints of your initial
signal theta(t) or theta_hat(t).
Are you saying that theta_hat(t) should be quantized, and therefore not
set
directly to arg(r(t))? Thanks.
-William
On Fri, Oct 7, 2011 at 10:08 AM, Achilleas A.
<[email protected]
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.
Sponsor our Newsletter | Privacy Policy | Terms of Service | Remote Ruby Jobs