Reply by SteveSmith November 1, 20072007-11-01
Hi Jon,
Look at chapter 16 of my free on-line book at www.DSPguide.com. It will
tell you how to find the coefficients of the FIR filter with the
information you have. 
Regards,
Steve Smith



Reply by mnentwig October 30, 20072007-10-30
> Mark wrote: >From an efficiency standpoint, I would suggest moving the arbitrary >ratio resampling (ARR -- not necessarily Farrow) a bit earlier in the >chain, but not all the way to the beginning. > >In a cost-per-output-sample shootout, the upsample by 2 will beat the >pants off the ARR. But the ARR is better/faster if it is fed >oversampled data. Which leads me to suggest a sweet spot of using ARR >with data that is oversampled about 2x or 4x. > > >Use halfband filters for the upsample-by-2 stages, only compute the >midpoint samples. The original points will stay unchanged. > >At each up-by-2 stage the transition bandwidth gets wider, allowing for >shorter filters, which helps offset the increasing rate.
Yes, that sounds very reasonable. Cheers Markus
Reply by Andor October 30, 20072007-10-30
robert bristow-johnson wrote:

> > I would start with Parks McClellan (aka equiripple), but keep an eye on > > those outermost samples of the impulse response. They are not on a smooth > > curve with the others. > > if the OP is using MATLAB with the sig proc toolbox, i might suggest > firls(.) as an alternative to P-McC.
An alternative to firls() for users without the SP Toolbox is Greg Berchin's excellent FDLS filter desing method: http://apollo.ee.columbia.edu/spm/external/tipsandtricks/files/TandT_Jan2007.zip
> there are some other tricks.
The one about randomizing the error in the P-M algorithm, for example. Is there a write-up or some code out there? Regards, Andor
Reply by Mark Borgerding October 30, 20072007-10-30
mnentwig wrote:
> To come back to the question, a possible signal chain _could_ look as > follows: > > input at rate 1 > upsampling filter by 2 => rate 2 > upsampling filter by 2 => rate 4 > upsampling filter by 2 => rate 8 > upsampling filter by 2 => rate 16 > upsampling filter by 2 => rate 32 > Farrows from rate 32 to 52.08
From an efficiency standpoint, I would suggest moving the arbitrary ratio resampling (ARR -- not necessarily Farrow) a bit earlier in the chain, but not all the way to the beginning. In a cost-per-output-sample shootout, the upsample by 2 will beat the pants off the ARR. But the ARR is better/faster if it is fed oversampled data. Which leads me to suggest a sweet spot of using ARR with data that is oversampled about 2x or 4x. Use halfband filters for the upsample-by-2 stages, only compute the midpoint samples. The original points will stay unchanged. At each up-by-2 stage the transition bandwidth gets wider, allowing for shorter filters, which helps offset the increasing rate. Example: You can interpolate a 4x oversampled signal to 8x oversampled with 90dB OOB rejection using a symmetric fir having only 3 multiplies. And that only needs to be applied to every other output sample. Or you can get 60dB rejection with only two multiplies. fc=1/8; b=remez( 12, [0 fc 1-fc 1],[1 1 0 0]); freqz(b) -- Mark
Reply by Rick Lyons October 4, 20072007-10-04
On Thu, 04 Oct 2007 15:05:46 GMT, R.Lyons@_BOGUS_ieee.org (Rick Lyons)
wrote:

  (snipped)

Hi,
   I just thought of something.
If you "interpolate by a factor of 5 four times 
in succession", the number of taps in the filter
used in the 2nd interpolation step will be fewer 
than the number of taps in the filter
used in the 1st interpolation step.

And the number of filter taps used in the 3rd 
interpolation step will be fewer 
than the number of filter taps used in the 2nd 
interpolation step, and so on.  That's good news for 
you Jon.

See Ya',
[-Rick-]

Reply by Jerry Avins October 4, 20072007-10-04
Ron N. wrote:

   ...

> The problem is that any finite length FIR will also leave > spectral aliases; just smaller amounts as the FIR length > increases and the coefficients improve. The number of sets > depends on the requirements of your application, as every > application may have a different requirement for how small the > spectral images have to become before one can safely ignore > them (for instance if they are smaller than some quantization > error, the thermal noise in the original signal, or the amount > needed to demodulate some data in the signal, etc.)
That's exactly analogous to my having been asked to drill a hole "dead center" in the bottom of a machined aluminum cup. I asked what tolerance was allowed and got a blank stare and a one-word response: "Tolerance?" When I translated that to allowed error, the answer was simple: "It has to be exact. No error at all". I declared incompetence, saying that I could measure a tenth of a mil, but only work to about three times that. Besides, if the cup was machined last week, it didn't have an exact center any more. El Exigente asked how big a mil is, and I told him about a third the thickness of a piece of writing paper. He was astonished: "I can't even see that small!" My three-jaw chuck and a twist drill did nicely. Jerry -- Engineering is the art of making what you want from things you can get. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Reply by Ron N. October 4, 20072007-10-04
On Oct 4, 2:04 am, "MrAlfred" <jonne...@online.no> wrote:
> Ron N wrote: > >The problem is that filter coefficients *can* be found from this > >information, an infinite number of sets of coefficients, including > >just 1.0 (duplicate the nearest sample). If 1.0 isn't good enough, > >why not? If 1.0 isn't good enough, then you must have some > >unstated lower bound on interpolation accuracy. > > I thought duplicating the nearest sample would give unwanted repeating > specters?? If not, 1.0 is probably what I want.
Yes, duplicating samples will create spectral aliasing.
> >For some metrics, the "quality" of a filter will increase with the > >number of coefficients, without bound. Where do you stop if > >you don't want to filter infinitely? If you don't want an infinite > >FIR computation, then you must have some unstated upper > >bound of quality of interpolation. Some number of bits of > >precision or something. > > I really don't know the answer to this one. I want the signal to be "the > same as before interpolating" and with no repeating specters. If 1.0 isn't > good enough, what about 10 or 20 sets of coeffisients? Would i.e 30 sets of > coeffisients work fine for most applications, or does it not work that way?
The problem is that any finite length FIR will also leave spectral aliases; just smaller amounts as the FIR length increases and the coefficients improve. The number of sets depends on the requirements of your application, as every application may have a different requirement for how small the spectral images have to become before one can safely ignore them (for instance if they are smaller than some quantization error, the thermal noise in the original signal, or the amount needed to demodulate some data in the signal, etc.) IMHO. YMMV. -- rhn A.T nicholson d.0.t C-o-M
Reply by Rick Lyons October 4, 20072007-10-04
On Wed, 03 Oct 2007 09:50:25 -0500, "MrAlfred" <jonneset@online.no>
wrote:

>Thank you all for your replies! I have to stress that I have no experience >with digital signal processing at all, I am a complete novice in this >field. I have only used linear interpolation before, so please bear with >me even if you'll find my questions stupid :) > >Mnentwig wrote: >>Filter specs, shooting from the hip: >>Passband ripple < 0.1 dB >>Stopband (alias band) attenuation: > 60 dB >>OF COURSE this depends on YOUR requirements. > >My problem is that I really don't know what my requirements are. I know >that I have a signal, and that I want it to be interpolated, but I don't >know the requirements in terms of filter specs or what passband and >stopband really means. What I know: > >-Datastream output now sampled at 4800 times pr second >-Have to be interpolated to 250000 samples pr second without repeating >specters > >Can the coeffisients be found with just this information? In other words, >can the filter specs be calculated out of this information? If not, what >more do I need to know? >
(snipped)
>Regards, >Jon >Trondheim, Norway
Hello Jon, You have a very computationally tough problem! Your interpolation factor is: 250000/4800 = 625/12 . So you must interpolate your signal by 625, and then decimate that "interpolated" signal by 12. Whew!!! Interpolation by 625 requires a lowpass filter having a passband width so narrow that I don't want to even contemplate how I'd implement such a filter. I haven't studied such an idea, but perhaps you could interpolate by a factor of 5 four times in succession. Doing that, I assume, would require far fewer filter computations than interpolating once by 625. Now, if I'm not mistaken, interpolation by 5 requires a lowpass filter whose passband is roughly 0.1 times the "upsampled by 5" sample rate. Now, the number of coefficients in such a filter will affect the accuracy of your interpolation (i.e., the attenuation of the unwanted spectral images caused by the upsampling by 5). The more coefficients in the filter, the more accurate the interpolation. Designing such a lowpass filter is not too complicated. (There are probably 500 guys in this newsgroup who could help you design that filter.) If that "interpolate by a factor of 5 four times in succession" notion works, then you could end your entire process with a decimate by 12 operation. Jon, digital resampling is not the most complicated subject in the world (compared to, say, the U.S. Income Tax Code), but it's definitely not terribly simple either. You should start learning about the filtering required in resampling applications, and to do that you need to have a fairly solid understanding of digital filters. In any case, those are my "two cents." You have an **INTERESTING** problem! Keep asking questions here, OK? Good Luck, [-Rick-]
Reply by MrAlfred October 4, 20072007-10-04
Ron N wrote:
>The problem is that filter coefficients *can* be found from this >information, an infinite number of sets of coefficients, including >just 1.0 (duplicate the nearest sample). If 1.0 isn't good enough, >why not? If 1.0 isn't good enough, then you must have some >unstated lower bound on interpolation accuracy.
I thought duplicating the nearest sample would give unwanted repeating specters?? If not, 1.0 is probably what I want.
>For some metrics, the "quality" of a filter will increase with the >number of coefficients, without bound. Where do you stop if >you don't want to filter infinitely? If you don't want an infinite >FIR computation, then you must have some unstated upper >bound of quality of interpolation. Some number of bits of >precision or something.
I really don't know the answer to this one. I want the signal to be "the same as before interpolating" and with no repeating specters. If 1.0 isn't good enough, what about 10 or 20 sets of coeffisients? Would i.e 30 sets of coeffisients work fine for most applications, or does it not work that way?
Reply by Ron N. October 3, 20072007-10-03
On Oct 3, 7:50 am, "MrAlfred" <jonne...@online.no> wrote:
> Thank you all for your replies! I have to stress that I have no experience > with digital signal processing at all, I am a complete novice in this > field. I have only used linear interpolation before, so please bear with > me even if you'll find my questions stupid :) > > Mnentwig wrote: > >Filter specs, shooting from the hip: > >Passband ripple < 0.1 dB > >Stopband (alias band) attenuation: > 60 dB > >OF COURSE this depends on YOUR requirements. > > My problem is that I really don't know what my requirements are. I know > that I have a signal, and that I want it to be interpolated, but I don't > know the requirements in terms of filter specs or what passband and > stopband really means. What I know: > > -Datastream output now sampled at 4800 times pr second > -Have to be interpolated to 250000 samples pr second without repeating > specters > > Can the coeffisients be found with just this information? In other words, > can the filter specs be calculated out of this information?
The problem is that filter coefficients *can* be found from this information, an infinite number of sets of coefficients, including just 1.0 (duplicate the nearest sample). If 1.0 isn't good enough, why not? If 1.0 isn't good enough, then you must have some unstated lower bound on interpolation accuracy. For some metrics, the "quality" of a filter will increase with the number of coefficients, without bound. Where do you stop if you don't want to filter infinitely? If you don't want an infinite FIR computation, then you must have some unstated upper bound of quality of interpolation. Some number of bits of precision or something. If you use some canned software package, it probably has some assumed precision or quality level built in. If it's SDR, then maybe there is some SNR at which you want to be able to recover some signal? IMHO. YMMV. -- rhn A.T nicholson d.0.t C-o-M