FPGA Central - World's 1st FPGA / CPLD Portal

FPGA Central

World's 1st FPGA Portal

 

Go Back   FPGA Groups > NewsGroup > DSP

DSP comp.dsp newsgroup, mailing list

Reply
 
LinkBack Thread Tools Display Modes
  #1 (permalink)  
Old 09-26-2003, 01:41 PM
Matt Timmermans
Guest
 
Posts: n/a
Default Nonlinear brick wall filters


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?


Reply With Quote
  #2 (permalink)  
Old 09-29-2003, 01:41 AM
Fred Marshall
Guest
 
Posts: n/a
Default Re: Nonlinear brick wall filters


"Matt Timmermans" <[email protected]> wrote in message
news:[email protected] .
>
> 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


Reply With Quote
  #3 (permalink)  
Old 09-29-2003, 03:21 AM
Matt Timmermans
Guest
 
Posts: n/a
Default Re: Nonlinear brick wall filters


"Fred Marshall" <[email protected]_the_x.acm.org> wrote in message
news:[email protected] .
> 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?


Reply With Quote
  #4 (permalink)  
Old 09-29-2003, 08:04 PM
Fred Marshall
Guest
 
Posts: n/a
Default Re: Nonlinear brick wall filters


"Matt Timmermans" <[email protected]> wrote in message
news:[email protected]
>
> "Fred Marshall" <[email protected]_the_x.acm.org> wrote in message
> news:[email protected] .
> > 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



Reply With Quote
  #5 (permalink)  
Old 09-30-2003, 01:43 AM
Matt Timmermans
Guest
 
Posts: n/a
Default Re: Nonlinear brick wall filters

"Fred Marshall" <[email protected]_the_x.acm.org> wrote in message
news:Cc%[email protected]
>
> 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.



Reply With Quote
  #6 (permalink)  
Old 09-30-2003, 04:28 AM
Fred Marshall
Guest
 
Posts: n/a
Default Re: Nonlinear brick wall filters


"Matt Timmermans" <[email protected]> wrote in message
news:[email protected] .
> "Fred Marshall" <[email protected]_the_x.acm.org> wrote in message
> news:Cc%[email protected]
> >
> > 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






Reply With Quote
  #7 (permalink)  
Old 10-02-2003, 12:01 AM
Fred Marshall
Guest
 
Posts: n/a
Default Re: Nonlinear brick wall filters

"Fred Marshall" <[email protected]_the_x.acm.org> wrote in message news:<[email protected]>...
> "Matt Timmermans" <[email protected]> wrote in message
> news:[email protected] .
> > "Fred Marshall" <[email protected]_the_x.acm.org> wrote in message
> > news:Cc%[email protected]
> > >
> > > 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
Reply With Quote
Reply

Bookmarks

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
SystemVerilog: How to get wall clock time delays w/o knowledge ofmodule timescale units? mrfirmware Verilog 8 02-12-2008 09:27 PM
Random number generation in Windows - how to use wall clock? FGreen Verilog 2 10-27-2004 03:40 PM
filters in vhdl Frank van Eijkelenburg VHDL 1 10-01-2003 08:06 PM
Re: nonlinear headache Tom DSP 0 09-26-2003 02:58 AM
Design of nonlinear phase FIR filters on magnitude only criteria Robert Rozman DSP 0 08-20-2003 06:45 PM


All times are GMT +1. The time now is 06:31 AM.


Powered by vBulletin® Version 3.8.0
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0
Copyright 2008 @ FPGA Central. All rights reserved