Reply by Rick Lyons August 11, 20052005-08-11
On Sun, 07 Aug 2005 23:06:24 -0400, Jerry Avins <jya@ieee.org> wrote:

>Rick Lyons wrote: > > ... > >> I'm thinkin' of including that "y2(n) differentiator" as a >> "DSP Trick" in the 3rd edition of my book. > >Hi, Rick. > >How about sending it Grant Griffin in the mean time? > >Jerry
Ah yes, I'll look into that. Thanks. See Ya', [-Rick-]
Reply by Rick Lyons August 11, 20052005-08-11
On Mon, 08 Aug 2005 11:02:48 +0800, Steve Underwood <steveu@dis.org>
wrote:

  (snipped)
>> >> >What does "x(n-6_/16" mean? Is it supposed to be: > >y2(n) = -x(n)/16 + x(n-2) - x(n-4) + x(n-6)/16 > >which has a nice symmetric feel to it?
>Steve
Hi Steve, Shoot! I screwed up. You are correct, it's "x(n-6)/16". Thanks, [-Rick-]
Reply by Jerry Avins August 8, 20052005-08-08
Rick Lyons wrote:

   ...

> I'm thinkin' of including that "y2(n) differentiator" as a > "DSP Trick" in the 3rd edition of my book.
Hi, Rick. How about sending it Grant Griffin in the mean time? Jerry -- Engineering is the art of making what you want from things you can get. &#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;&#4294967295;
Reply by Steve Underwood August 8, 20052005-08-08
Rick Lyons wrote:

>On Wed, 3 Aug 2005 12:19:12 -0400, "Clay S. Turner" ><Physics@Bellsouth.net> wrote: > > (snipped) > > >>So with mild oversampling, modest filter lengths are all that are needed. >> >>IHTH, >> >>Clay >> >> > >Hi Clay, > > I agree with you completely. > >If moderate oversampling is used, Paul might "get away with" >using a "central-difference" differentiator defined by: > >y1(n) = [x(n) - x(n-2)]/2 > >which, happily, has a group delay that's an integer >number of samples. > >I just discovered an interesting digital differentiator >that has a wider freq range of "linear magnitude operation" >than the central-difference differentiator. >That new(?) differentiator is defined by: > >y2(n) = -x(n)/16 + x(n-2) -x(n-4) + x(n-6_/16). > >
What does "x(n-6_/16" mean? Is it supposed to be: y2(n) = -x(n)/16 + x(n-2) - x(n-4) + x(n-6)/16 which has a nice symmetric feel to it?
>This "wider-band" y2(n) differentiator has two additional >nice properties. > >(1) It's non-unity coefficients are powers of two, so binary >shifts can be used instead of coefficient multiplication. >(2) It's group delay is an integer number of samples >making it useful for your proposed FM demod scheme. > >I'm thinkin' of including that "y2(n) differentiator" as a >"DSP Trick" in the 3rd edition of my book. > >
Steve
Reply by Rick Lyons August 7, 20052005-08-07
On Wed, 3 Aug 2005 12:19:12 -0400, "Clay S. Turner"
<Physics@Bellsouth.net> wrote:

  (snipped)
> >So with mild oversampling, modest filter lengths are all that are needed. > >IHTH, > >Clay
Hi Clay, I agree with you completely. If moderate oversampling is used, Paul might "get away with" using a "central-difference" differentiator defined by: y1(n) = [x(n) - x(n-2)]/2 which, happily, has a group delay that's an integer number of samples. I just discovered an interesting digital differentiator that has a wider freq range of "linear magnitude operation" than the central-difference differentiator. That new(?) differentiator is defined by: y2(n) = -x(n)/16 + x(n-2) -x(n-4) + x(n-6_/16). This "wider-band" y2(n) differentiator has two additional nice properties. (1) It's non-unity coefficients are powers of two, so binary shifts can be used instead of coefficient multiplication. (2) It's group delay is an integer number of samples making it useful for your proposed FM demod scheme. I'm thinkin' of including that "y2(n) differentiator" as a "DSP Trick" in the 3rd edition of my book. See Ya', [-Rick-]
Reply by robert bristow-johnson August 6, 20052005-08-06
in article ocSIe.25423$Mo.19866@bignews5.bellsouth.net, Clay S. Turner at
Physics@Bellsouth.net wrote on 08/05/2005 19:02:

> > "robert bristow-johnson" <rbj@audioimagination.com> wrote in message > news:BF16731D.95D3%rbj@audioimagination.com... >> in article zkVHe.2499$jq.2292@bignews3.bellsouth.net, Clay S. Turner at >> >> the trig identity: >> >> tan(a-b) = (tan(a) - tan(b))/(1 + tan(a)*tan(b)) >> >> can be flipped around a little and get >> >> arctan(x) - arctan(y) = arctan( (x-y)/(1 + x*y) ) >> >> if |arctan(x) - arctan(y)| < pi/2 >> >> so i think that an exact deltaphase (which is something like omega) can be >> done. > > > Yes that method can certainly be used to find a delta phase, but only in the > limit of very small time intervals does > > delta phase d phase > ----------- -> -------- > delta time d time > > This is the difference between finding average and instantaneous frequency.
you're right. i think, now that i'm thinking, that this trig identity was used for phase unwrapping (without having to go into all of that 4-quadrant crap that atan2() does).
> So if his system isn't highly oversampled, he will have slope errors. The > method I put forth (it has been around longer than I) will be as accurate as > the derivative filters allow.
yeah, i knew that. it's just how to compute dI/dt and dQ/dt. but, with a little delay, you can reconstruct the continuous-time versions of I and Q and compute the derivative from thems. so you're right.
> And as I posted before, a little oversampling > allows for very accurate derivative evaluation with relatively short FIR > filters. > > By the way, the trig theorem you cited is famous for its use in one of the > early ways to accurately find pi. > > arctan(1/2) + arctan(1/3) = atan(1) = pi/4
wow, the one i remember is 4*arctan(1/5) - arctan(1/239) = pi/4 i saw that used in a computer program to compute pi to a zillion digits or so. but it looks like your's works, too.
> The power series for arctan(x) converges much more quickly when |x| <1 than > when |x| = 1.
yeah, arctan(1) is kinda nasty. we should just remember what it is and apply any series approximation for |x| < 1 . (which i did, taking Rick's trick a little further. i think i might have posted it here a long time ago.) -- r b-j rbj@audioimagination.com "Imagination is more important than knowledge."
Reply by Clay S. Turner August 5, 20052005-08-05
"robert bristow-johnson" <rbj@audioimagination.com> wrote in message 
news:BF16731D.95D3%rbj@audioimagination.com...
> in article zkVHe.2499$jq.2292@bignews3.bellsouth.net, Clay S. Turner at > > actually, Tim and Clay, the trig identity: > > tan(a-b) = (tan(a) - tan(b))/(1 + tan(a)*tan(b)) > > can be flipped around a little and get > > arctan(x) - arctan(y) = arctan( (x-y)/(1 + x*y) ) > > if |arctan(x) - arctan(y)| < pi/2 > > so i think that an exact deltaphase (which is something like omega) can be > done.
Hello Robert, Yes that method can certainly be used to find a delta phase, but only in the limit of very small time intervals does delta phase d phase ----------- -> -------- delta time d time This is the difference between finding average and instantaneous frequency. So if his system isn't highly oversampled, he will have slope errors. The method I put forth (it has been around longer than I) will be as accurate as the derivative filters allow. And as I posted before, a little oversampling allows for very accurate derivative evaluation with relatively short FIR filters. By the way, the trig theorem you cited is famous for its use in one of the early ways to accurately find pi. atan(1/2) + atan(1/3) = atan(1) = pi/4 The power series for atan(x) converges much more quickly when |x| <1 than when |x| = 1. Clay
Reply by robert bristow-johnson August 3, 20052005-08-03
in article zkVHe.2499$jq.2292@bignews3.bellsouth.net, Clay S. Turner at
Physics@Bellsouth.net wrote on 08/02/2005 21:46:

...

> your phase > > theta = arctan(Q/I) > > and freq > > omega = (d/dt) arctan(Q/I) > > just carry out the calculus > > omega = (I*(d/dt)Q - Q*(d/dt)I) / (I^2 + Q^2)
... in article 11f1okk9m8sna1@corp.supernews.com, Tim Wescott at tim@seemywebsite.com wrote on 08/03/2005 11:28:
> I saw that after I posted the comment - the next observation is that it > is exact when you're taking the differential, but how exact is it when > you're approximating the differential with a difference? I'll assume > it's good since you've had good results with it, but will it stand up to > broadcast quality FM?
actually, Tim and Clay, the trig identity: tan(a-b) = (tan(a) - tan(b))/(1 + tan(a)*tan(b)) can be flipped around a little and get arctan(x) - arctan(y) = arctan( (x-y)/(1 + x*y) ) if |arctan(x) - arctan(y)| < pi/2 so i think that an exact deltaphase (which is something like omega) can be done. i leave it to the reader to work out the details. :-) (translated: "i'm a lazy-ass and i got some other work to do.") -- r b-j rbj@audioimagination.com "Imagination is more important than knowledge."
Reply by Clay S. Turner August 3, 20052005-08-03
"Tim Wescott" <tim@seemywebsite.com> wrote in message 
news:11f1okk9m8sna1@corp.supernews.com...
>> Clay > > I saw that after I posted the comment - the next observation is that it is > exact when you're taking the differential, but how exact is it when you're > approximating the differential with a difference? I'll assume it's good > since you've had good results with it, but will it stand up to broadcast > quality FM? > > -- >
Hello Tim, It is simply a matter of the length of the differentiator and the amount of oversampling. I had an application where I was finding features in the modulation to within 1/1000th of a sample time. I'm sure this approach can handle broadcast FM just fine. The linearity I had was way better than the flatness of the IF passband. It is pretty easy to have a DSP demodulator exceed the specs of the rest of the radio especially for plain FM. For example if you want the differentiator to work over a range of 0 to 0.4fs then the following relative errors are achievable for the given filter lengths: 11 taps -> 0.029198 21 taps -> 0.000874 31 taps -> 0.000030 If your system has more oversampling, i.e., restrict the differentiator's range to 0 to 0.3fs, then the following relative errors are achievable 11 taps -> 0.000826 21 taps -> 0.000001 So with mild oversampling, modest filter lengths are all that are needed. IHTH, Clay
Reply by Tim Wescott August 3, 20052005-08-03
Clay S. Turner wrote:

> "Tim Wescott" <tim@seemywebsite.com> wrote in message > news:11f09ir8lbvg23a@corp.supernews.com... > >>You could take Clay's suggestion, although you'll need to keep the >>sampling rate up: if I'm right that method uses the small-angle >>approximation and will distort for large phase jumps. > > > Tim, > > Actually there is no SAA used here. I've already used it in narrowband > applications with extreme success. > > Clay
I saw that after I posted the comment - the next observation is that it is exact when you're taking the differential, but how exact is it when you're approximating the differential with a difference? I'll assume it's good since you've had good results with it, but will it stand up to broadcast quality FM? -- Tim Wescott Wescott Design Services http://www.wescottdesign.com