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.
�����������������������������������������������������������������������
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