The sinc function is the impulse response of an ideal linear-phase brick
wall filter. Are there any ideal brick wall filters with non-linear phase
and known impulse response?
|
|
0
|
|
|
|
Reply
|
Matt
|
9/26/2003 12:41:33 PM |
|
"Matt Timmermans" <mt0000@sympatico.nospam-remove.ca> wrote in message
news:mtWcb.4798$PT3.657059@news20.bellglobal.com...
>
> The sinc function is the impulse response of an ideal linear-phase brick
> wall filter. Are there any ideal brick wall filters with non-linear phase
> and known impulse response?
>
>
Matt,
Seems like all you have to do is cascade the ideal brick wall filter with an
all-pass (which is often used for phase compensation). Pick the all-pass
and you'll have a brick wall filter with non-linear phase won't you?
Fred
|
|
0
|
|
|
|
Reply
|
Fred
|
9/29/2003 12:41:59 AM
|
|
"Fred Marshall" <fmarshallx@remove_the_x.acm.org> wrote in message
news:43Ldb.2188$v22.2108804@feed2.centurytel.net...
> Matt,
>
> Seems like all you have to do is cascade the ideal brick wall filter with
an
> all-pass (which is often used for phase compensation). Pick the all-pass
> and you'll have a brick wall filter with non-linear phase won't you?
>
> Fred
Maybe, but I wouldn't know how to manage the negative-time part of the
response. I could run the time-inverted allpass on the time-inverted
negative part, but the time-inverted allpass has to be unstable, doesn't it?
|
|
0
|
|
|
|
Reply
|
Matt
|
9/29/2003 2:21:12 AM
|
|
"Matt Timmermans" <mt0000@sympatico.nospam-remove.ca> wrote in message
news:JFMdb.847$Tu2.135336@news20.bellglobal.com...
>
> "Fred Marshall" <fmarshallx@remove_the_x.acm.org> wrote in message
> news:43Ldb.2188$v22.2108804@feed2.centurytel.net...
> > Matt,
> >
> > Seems like all you have to do is cascade the ideal brick wall filter
with
> an
> > all-pass (which is often used for phase compensation). Pick the
all-pass
> > and you'll have a brick wall filter with non-linear phase won't you?
> >
> > Fred
>
> Maybe, but I wouldn't know how to manage the negative-time part of the
> response. I could run the time-inverted allpass on the time-inverted
> negative part, but the time-inverted allpass has to be unstable, doesn't
it?
Matt,
Well, you did say "ideal" in your first post. I wasn't sure if you were
asking a theoretical question or a practical one. So, I tried to answer the
theoretical question.
It seems like you're asking a "mixed" question now.
- The brick wall filter's impulse response is of infinite extent (+/-)
because its transform is of limited extent (the brick wall is nonzero for a
limited span of frequency).
- The all-pass is possibly of infinite impulse response but is causal.
There's no need to invert it that I know of - unless you mean in the
convolution operation.
As a practical matter, because the perfect brick wall is physically
unrealizable / because the impulse response is of infinite length, means
that the cascaded brick wall + all-pass filter will have an impulse response
of infinite length as well. In fact, because the sinc is symmetrical about
zero time, there's no need to time reverse either function before doing the
convolution integral. However, the integral has to start at +/- infinity to
accomodate the sinc.
So, if we're talking about the real world, then the first thing you want to
do is to advance the response into the future so that the sinc-like impulse
response is causal. You'd then be starting with an approximation to the
brick wall - which isn't what you'd initially asked about.
A practical application would start with the best "brick wall" filter you
care to construct. If it's a symmetrical FIR, then it will be linear phase.
Otherwise it won't be. So you can get nonlinear phase filters with a
nonsymmetrical FIR filter (in general) or an IIR filter. The cascade with
an all-pass is one such approach which may also allow you to control the
phase. You haven't mentioned your phase needs other than "non-linear
phase".
What are you needing to do? What's the application?
Fred
|
|
0
|
|
|
|
Reply
|
Fred
|
9/29/2003 7:04:25 PM
|
|
"Fred Marshall" <fmarshallx@remove_the_x.acm.org> wrote in message
news:Cc%db.3$F4.3029@feed2.centurytel.net...
>
> What are you needing to do? What's the application?
Every now and then it annoys me that the sinc filter's impulse response only
falls off as 1/t, and I wonder if there's an alternative that dacays more
quickly. It would be useful for designing pairs of
antialiasing+reconstruction filters that limit the worst-case magnitude of
reconstructed samples.
|
|
0
|
|
|
|
Reply
|
Matt
|
9/30/2003 12:43:29 AM
|
|
"Matt Timmermans" <mt0000@sympatico.nospam-remove.ca> wrote in message
news:6k4eb.2362$op2.362399@news20.bellglobal.com...
> "Fred Marshall" <fmarshallx@remove_the_x.acm.org> wrote in message
> news:Cc%db.3$F4.3029@feed2.centurytel.net...
> >
> > What are you needing to do? What's the application?
>
> Every now and then it annoys me that the sinc filter's impulse response
only
> falls off as 1/t, and I wonder if there's an alternative that dacays more
> quickly. It would be useful for designing pairs of
> antialiasing+reconstruction filters that limit the worst-case magnitude of
> reconstructed samples.
Matt,
Absolutely there are filters that decay faster than 1/t! I believe a
windowing method gives them to you as follows:
1) Start with a perfect filter.
2) Convolve the *filter* response with a sinc - this gives you the response
you'd get with a time limited filter as in any FIR.
Alternately:
1) Start with the same filter.
2) Convolve the filter impulse response with 0.5*Dir(-T)+Dir(0)+Dir(+T)
where T is the frequency sampling interval and "Dir" is the Dirichlet (like
a sinc or could be substitutedwith sinc() if this is continuous instead of
discrete) that has zero crossings at intervals of T.
This filter decays as 1/t^3.
Similarly, you can create other sums of Dirs or sincs that have even faster
decay using longer sequences with binomial series coefficients where "a" is
an even integer such as:
1
1.0*sinc(0) decays as 1/t
1 2 1
0.5*sinc(-T)+1.0*sinc(0)+0.5*sinc(T) decays as 1/t^3
1 3 5 3 1
(1/12)*sinc(-2T)+0.25*sinc(-T)+1.0*sinc(0)+0.25*sinc(T)+(1/12)*sinc(2T)
decays as 1/t^5
1 4 8 12 8 4 1
.... decays as 1/t^7
etc.
Another way to say this is that you use a limited set of these as basis
functions to build the filter in place of the sinc. Notice that each is
normalized to 1.0 weighting of the sinc at the peak.
Because of this, you can build a function that is sinc-convolved and then
simply add the trailing sample values at the end.
So, if you start with a filter that would be sinc convolved - with sharp
edges, then simply add two samples at the end that are 1/2 of the original
last samples to the sequence. The filter impulse response will increase by
two samples and the continuous evaluation of it will decay as 1/t^3. I
think this works......
There's a rule that goes like this:
Look at the opposite Fourier domain of the function - the region that is of
"limited support" - i.e. time-limited or band-limited. Examine the edges of
the function. Find the lowest order derivative of that function that isn't
zero. If the order of the derivative is "a", then the function decays in
the opposite domain as 1/t^(a+1).
I'm not sure what this has to do with limiting the worst case magnitude of
reconstructed samples..... unless you have a situation where the bandwidth
of the sequence wasn't guaranteed to meet the Nyquist criterion to begin
with..... there are pathological cases like this. We dealt with one of
those here not too long ago (months ago).
I may have "flipped" a domain in the discussion above here and there - hope
you can figure it out OK.
Fred
|
|
0
|
|
|
|
Reply
|
Fred
|
9/30/2003 3:28:23 AM
|
|
"Fred Marshall" <fmarshallx@remove_the_x.acm.org> wrote in message news:<3B6eb.14$F4.7070@feed2.centurytel.net>...
> "Matt Timmermans" <mt0000@sympatico.nospam-remove.ca> wrote in message
> news:6k4eb.2362$op2.362399@news20.bellglobal.com...
> > "Fred Marshall" <fmarshallx@remove_the_x.acm.org> wrote in message
> > news:Cc%db.3$F4.3029@feed2.centurytel.net...
> > >
> > > What are you needing to do? What's the application?
> >
> > Every now and then it annoys me that the sinc filter's impulse response
> only
> > falls off as 1/t, and I wonder if there's an alternative that dacays more
> > quickly. It would be useful for designing pairs of
> > antialiasing+reconstruction filters that limit the worst-case magnitude of
> > reconstructed samples.
>
> Matt,
>
> Absolutely there are filters that decay faster than 1/t! I believe a
> windowing method gives them to you as follows:
> 1) Start with a perfect filter.
> 2) Convolve the *filter* response with a sinc - this gives you the response
> you'd get with a time limited filter as in any FIR.
> Alternately:
> 1) Start with the same filter.
> 2) Convolve the filter impulse response with 0.5*Dir(-T)+Dir(0)+Dir(+T)
> where T is the frequency sampling interval and "Dir" is the Dirichlet (like
> a sinc or could be substitutedwith sinc() if this is continuous instead of
> discrete) that has zero crossings at intervals of T.
> This filter decays as 1/t^3.
> Similarly, you can create other sums of Dirs or sincs that have even faster
> decay using longer sequences with binomial series coefficients where "a" is
> an even integer such as:
> 1
> 1.0*sinc(0) decays as 1/t
> 1 2 1
> 0.5*sinc(-T)+1.0*sinc(0)+0.5*sinc(T) decays as 1/t^3
> 1 3 5 3 1
> (1/12)*sinc(-2T)+0.25*sinc(-T)+1.0*sinc(0)+0.25*sinc(T)+(1/12)*sinc(2T)
> decays as 1/t^5
> 1 4 8 12 8 4 1
> ... decays as 1/t^7
> etc.
> Another way to say this is that you use a limited set of these as basis
> functions to build the filter in place of the sinc. Notice that each is
> normalized to 1.0 weighting of the sinc at the peak.
> Because of this, you can build a function that is sinc-convolved and then
> simply add the trailing sample values at the end.
>
> So, if you start with a filter that would be sinc convolved - with sharp
> edges, then simply add two samples at the end that are 1/2 of the original
> last samples to the sequence. The filter impulse response will increase by
> two samples and the continuous evaluation of it will decay as 1/t^3. I
> think this works......
>
> There's a rule that goes like this:
> Look at the opposite Fourier domain of the function - the region that is of
> "limited support" - i.e. time-limited or band-limited. Examine the edges of
> the function. Find the lowest order derivative of that function that isn't
> zero. If the order of the derivative is "a", then the function decays in
> the opposite domain as 1/t^(a+1).
>
> I'm not sure what this has to do with limiting the worst case magnitude of
> reconstructed samples..... unless you have a situation where the bandwidth
> of the sequence wasn't guaranteed to meet the Nyquist criterion to begin
> with..... there are pathological cases like this. We dealt with one of
> those here not too long ago (months ago).
>
> I may have "flipped" a domain in the discussion above here and there - hope
> you can figure it out OK.
>
> Fred
Matt,
I got to thinking about this a bit more - it's been a long time!
First, if you have a periodic and sampled frequency response then that
corresponds to a periodic time response which is often simply a
representation of a time-limited response.
In that case, you can compute the frequency response between frequency
samples by convolving the frequency samples with a Dirichlet kernel
(like a sinc). The appropriate Dirichlet will have periodic zeros on
the sample points so the convolution is really just a superposition of
Dirichlets whose peaks are weighted by the sample values. Pretty
simple.
If you start with a brick wall filter then all of the samples are
equal so you have a "picket fence" sort of overlapping of Dirichlet
kernels of the same size. If the span of nonzero samples is less than
the period span you're using then the frequency response decays as
1/f.
Similarly, you can compute the continuous time response of a brick
wall filter by interpolating the samples with a sinc or Dirichlet and,
as you've pointed out, the impulse response decays as 1/t.
You get 1/f if the time window or impulse response has nonzero edges.
You get 1/t if the frequency window or frequency response has nonzero
edges.
To get 1/f^N you have to deal with the time window or you can deal
with the frequency response directly.
To get 1/t^N you have to deal with the frequency window or you can
deal with the time response directly.
In the direct approach, you construct the function using something
different than a sinc or Dirichlet.
Let's take the case where we want 1/t^3 impulse response behavior from
something like a brick wall filter.
Let's assume continuous, not periodic functions in both domains for
now.
We start with the time impulse response of the brick wall which is a
sinc and we'll have it's peak value be 1.0.
This decays as 1/t.
Now, add two sincs on either side of the original sinc with weights
0.5 each. the peaks of these added sincs are at the first zeros of
the original sinc (the zeros adjacent to the peak). The composite
result decays as 1/t^3 and has a wider "main lobe" or peak.
Otherwise, it looks much like a sinc.
The resulting frequency response is a raised cosine - not very much
like a brick wall. You apparently pay a lot in frequency to get the
1/t^3 result!! That makes sense because you've effectively reduced
the temporal extent of the impulse response which corresponds to
widening the frequency response or widening the intraband transitions.
Here, the brick wall edge has been widened to take up the entire
lowpass band.
If you truncate the sinc then there's no decay to worry about.
Further, if you truncate the sinc and do some shaping on it then you
can get back some of the lowpass frequency character you want. That's
the same as FIR filter design of a lowpass.
If you look at various "raised cosine" filters where the cosine shape
is of various widths at the band edge you'll see that the decay of the
impulse response corresponds to the width of the transition region.
Now, all of this has more or less assumed that the brick wall filter
is the well-known brick wall at fs/2. If the filter is of lower
passband, then the time response can be wider in the peak region and
can decay rapidly as discussed previously. Now, I don't think it will
work for half-band filters because the constructed composite binomial
series type sinc kernel will destroy the desired temporal zeros.
Fred
|
|
0
|
|
|
|
Reply
|
fmarshall
|
10/1/2003 11:01:02 PM
|
|
|
6 Replies
189 Views
(page loaded in 0.105 seconds)
|