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