Hi, I've to resample a signal from 16.3676 MHz to 4.096 MHz. If I'm not wrong I should interpolate by 10240 and then decimate by 40919. But, these are huge numbers! Is there any other way of doing it? By the way, due to performance requirements I couldn't acces the whole signal at a time, so I have to do the resampling process by blocks. Thank you. This message was sent using the Comp.DSP web interface on www.DSPRelated.com
Huge resampling factors
Started by ●October 24, 2005
Reply by ●October 24, 20052005-10-24
stilghar wrote:> I've to resample a signal from 16.3676 MHz to 4.096 MHz. If I'm not wrong > I should interpolate by 10240 and then decimate by 40919. But, these are > huge numbers! Is there any other way of doing it?Depends on how much tolerance you have for the output sample rate. 256/1023 is a bit simpler, with an error of 6.1e-006. But I'll bet you were hoping for another kind of answer. cheers, jerry
Reply by ●October 24, 20052005-10-24
Reply by ●October 24, 20052005-10-24
stilghar wrote:> Hi, > > I've to resample a signal from 16.3676 MHz to 4.096 MHz. If I'm not wrong > I should interpolate by 10240 and then decimate by 40919. But, these are > huge numbers! Is there any other way of doing it? > > By the way, due to performance requirements I couldn't acces the whole > signal at a time, so I have to do the resampling process by blocks. > > Thank you. > > > > This message was sent using the Comp.DSP web interface on > www.DSPRelated.comWhat kind of frequency error is acceptable? The less acceptable error the more memory you'll need for the up-conversion process. Probably the 250/999 ratio that Jerry Wolf gave would be best for high accuracy. Though if you can tolerate much lower accuracy, you could simply decimate by 4. That would get you within 0.2% I'm guessing you'll be using some kind of polyphase filter, to reduce the timing requirements. Not having the whole signal shouldn't matter at all, you'll be performing the up conversion on a sample-by-sample basis anyway, with filtering as appropriate to interpolate the waveform.
Reply by ●October 24, 20052005-10-24
stilghar wrote:> Hi, > > I've to resample a signal from 16.3676 MHz to 4.096 MHz. If I'm not wrong > I should interpolate by 10240 and then decimate by 40919. But, these are > huge numbers! Is there any other way of doing it? > > By the way, due to performance requirements I couldn't acces the whole > signal at a time, so I have to do the resampling process by blocks. > > Thank you. > > > > This message was sent using the Comp.DSP web interface on > www.DSPRelated.comSearch for the term "polyphase filtering" -- the upsampling and resampling can be implied rather than actual (don't ask what I mean -- just find a good page on the term). -- Tim Wescott Wescott Design Services http://www.wescottdesign.com
Reply by ●October 25, 20052005-10-25
Don't get totally locked into the thought that you must resample in integer ratios, despite all the DSP books showing that approach. Resampling is interpolation, and nothing says that you have to only calculate, via interpolation, at periods of 1/n. So why do we (well, the books, etc.) choose integer ratios? Well, if you pick an *arbitrary* ratio, it makes a fixed windowed-sinc (or whatever) table impractical. It also makes it difficult to suggest that the user do things insert a fractional number of zeros before filtering. For the latter, we never really insert the zero anyway (we use polyphase techniques, etc.). For the former, you can either caluate the factors as needed (usually a bad idea, speed-wise), or just make a reasonably-sized table and interpolate between the points to get any ratio you want. Linear interpolation works fine because a well-oversampled windowed-sinc function is pretty smooth from point to point. Google for Julius Smith's bandlimited interpolation webpage. In <Qq6dnbznoLs3RcHeRVn-2w@giganews.com> stilghar wrote:> Hi, > > I've to resample a signal from 16.3676 MHz to 4.096 MHz. If I'm not > wrong I should interpolate by 10240 and then decimate by 40919. But, > these are huge numbers! Is there any other way of doing it? > > By the way, due to performance requirements I couldn't acces the whole > signal at a time, so I have to do the resampling process by blocks. > > Thank you.
Reply by ●October 25, 20052005-10-25
>Hi, > >I've to resample a signal from 16.3676 MHz to 4.096 MHz. If I'm notwrong>I should interpolate by 10240 and then decimate by 40919. But, these are >huge numbers! Is there any other way of doing it? > >By the way, due to performance requirements I couldn't acces the whole >signal at a time, so I have to do the resampling process by blocks. > >Thank you. > > > >This message was sent using the Comp.DSP web interface on >www.DSPRelated.com >Hi, I've been thinking in all the possibilities you have gave me and I think that the best option is just decimate by 4. I haven't thought in the possibility of using an aproximation but it seems to be enough for my application and it's the simplest and fastest way of doing it. Anyway, thanks to everybody. This message was sent using the Comp.DSP web interface on www.DSPRelated.com