In article <k%HSb.6950$qU3.655682@news20.bellglobal.com>, Matt Timmermans <mt0000@sympatico.nospam-remove.ca> wrote:> >"Ronald H. Nicholson Jr." <rhn@mauve.rahul.net> wrote in message >news:bvfga0$497$1@blue.rahul.net... >> The sin(x) can be produced by an IIR. The next 1/x for small dx >> can be approximated by a Newton-Raphson iteration or two of about >> similar computational complexity to an IIR step. >> >> How many bits of accuracy do you need? > >Calculating 1/x is not hard, but you can't *convolve* an input of unbounded >length with the right half of 1/x using *finite memory* for the state.At some point 1/x might drop below the noise floor or quantization level of your data. Many PC's these days can hold several minutes of CD quality audio in memory. IMHO. YMMV. -- Ron Nicholson rhn AT nicholson DOT com http://www.nicholson.com/rhn/ #include <canonical.disclaimer> // only my own opinions, etc.
Half sinc IIR?
Started by ●January 30, 2004
Reply by ●January 31, 20042004-01-31
Reply by ●January 31, 20042004-01-31
In article <reISb.6958$qU3.657278@news20.bellglobal.com>, Matt Timmermans <mt0000@sympatico.nospam-remove.ca> wrote:>"Bob Cain" <arcane@arcanemethods.com> wrote in message >news:401B368B.A010C761@arcanemethods.com... >> Bob Cain wrote: >> > >> > I was thinking to avoid the windowed approximation to get >> > closer to a real brick wall in the non-real-time situations >> > where I can process the data first forward and then backward >> > in time. >> >> Which, on reconsideration, means I asked the wrong question, >> but you get the idea. > >Yes, you want a causal brick-wall filter, which don't really exist either. > >If you can process forwards and backwards, then you can use a high order >IIR. The final result after both passes would be linear phase, except that >the result of the first pass is infinitely long, and you would have to >process that infinitely long tail with the reverse pass.An IIR (with all its poles inside the unit circle) has exponential decay, which means that its tail will drop well below the noise floor or quantization level in finite time (unless you are talking about arbitrary or infinite precision math and data). IMHO. YMMV. -- Ron Nicholson rhn AT nicholson DOT com http://www.nicholson.com/rhn/ #include <canonical.disclaimer> // only my own opinions, etc.
Reply by ●January 31, 20042004-01-31
"Ronald H. Nicholson Jr." <rhn@mauve.rahul.net> wrote in message news:bvfmei$5r9$3@blue.rahul.net...> An IIR (with all its poles inside the unit circle) has exponential > decay, which means that its tail will drop well below the noise floor > or quantization level in finite time (unless you are talking about > arbitrary or infinite precision math and data).Yes, but that's not quite as efficient, or nearly as cool, as doing the instant reversal ;-)
Reply by ●January 31, 20042004-01-31
Matt Timmermans wrote:> > Yes, you want a causal brick-wall filter, which don't really exist either.Actually I want a causal filter whose autocorrelation yields something very close to a brick wall sinc. Any clue how to find what that would be? Sounds like it should be derivable but I'm short of the maths needed to do that.> > Here's an idea on how you could cheat: If you stop the forward pass > abruptly when all further input is 0, you should be able to simulate > generating that infinite tail and then consuming it in the opposite > direction, because the state variables of the reverse direction filter at > that point can be derived from a simple linear combination of the state > variables of the forward filter. Then you can just continue with the > reverse filtering using that calculated state.Now that's clever.> > This way you can get have linear phase from a high order IIR without a bunch > of extra work. It would be interesting to see how closely the resulting > impulse response resembles a sinc!Yes, if possible it sure would. Bob -- "Things should be described as simply as possible, but no simpler." A. Einstein
Reply by ●January 31, 20042004-01-31
"Bob Cain" <arcane@arcanemethods.com> wrote in message news:401BE7B6.F907EED8@arcanemethods.com...> > > Matt Timmermans wrote: > > > > Yes, you want a causal brick-wall filter, which don't really existeither.> > Actually I want a causal filter whose autocorrelation yields > something very close to a brick wall sinc. Any clue how to > find what that would be? Sounds like it should be derivable > but I'm short of the maths needed to do that.Any causal brick-wall filter (i.e., any perfect lowpass with aribtrary phase response) would do, because in the frequency domain, the autocorrelation does a pointwise multiplication of the frequency response with its complex conjugate, yielding a 0-phase brick-wall response. A sufficiently high-order Butterworth lowpass should do as an approximation.
Reply by ●January 31, 20042004-01-31
Matt Timmermans wrote:> > > > Actually I want a causal filter whose autocorrelation yields > > something very close to a brick wall sinc. Any clue how to > > find what that would be? Sounds like it should be derivable > > but I'm short of the maths needed to do that. > > Any causal brick-wall filter (i.e., any perfect lowpass with aribtrary phase > response) would do, because in the frequency domain, the autocorrelation > does a pointwise multiplication of the frequency response with its complex > conjugate, yielding a 0-phase brick-wall response. >Ah, of course. I'd like to think that would have occured to me but... :-)> A sufficiently high-order Butterworth lowpass should do as an approximation.Do you think that the best? I've done a lot of work with real world IR's and transfer functions but almost none with classical IIR filters. Thanks, Bob -- "Things should be described as simply as possible, but no simpler." A. Einstein
Reply by ●January 31, 20042004-01-31
"Bob Cain" <arcane@arcanemethods.com> wrote in message news:401C3ECB.9ED0D112@arcanemethods.com...> > > A sufficiently high-order Butterworth lowpass should do as anapproximation.> > Do you think that the best? I've done a lot of work with > real world IR's and transfer functions but almost none with > classical IIR filters.A Butterworth probably won't give you the best possible performance for a given order, no -- that would depend on more specific design criteria. I picked it because it's an easy way to meet whatever specific criteria you might have, if you can bump up the order as high as necessary. Butterworth specifically, because it's surprise free, and the near-linear-phase of a Bessel filter is clearly unnecessary for this application.
Reply by ●February 2, 20042004-02-02
Erik de Castro Lopo wrote:> sinc (x) == { sin (x)/x x != 1 > { 1 x == 1 >Erik, I know you just overlooked this, but sinc(x) == 1 when x==0. -- Jim Thomas Principal Applications Engineer Bittware, Inc jthomas@bittware.com http://www.bittware.com (703) 779-7770 I thought I was wrong once, but I was mistaken.
Reply by ●February 2, 20042004-02-02
Jim Thomas wrote:> Erik de Castro Lopo wrote: > >> sinc (x) == { sin (x)/x x != 1 >> { 1 x == 1 >> > > Erik, > > I know you just overlooked this, but sinc(x) == 1 when x==0.No contradiction there! did you see "x != 1" and " 1 x == 1? -- Engineering is the art of making what you want from things you can get. �����������������������������������������������������������������������
Reply by ●February 3, 20042004-02-03
Jerry Avins wrote:> Jim Thomas wrote: > >> Erik de Castro Lopo wrote: >> >>> sinc (x) == { sin (x)/x x != 1 >>> { 1 x == 1 >>> >> >> Erik, >> >> I know you just overlooked this, but sinc(x) == 1 when x==0. > > > No contradiction there! did you see "x != 1" and " 1 x == 1? >Hah! Nope! I only caught half the error! -- Jim Thomas Principal Applications Engineer Bittware, Inc jthomas@bittware.com http://www.bittware.com (703) 779-7770 I thought I was wrong once, but I was mistaken.






