```>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
>

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
```
```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.
```
```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.com

Search 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
```
```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.com

What 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.
```
```Pardon my fat-fingered mistyping.  250/999 gives an even better error
of 2.4e-007.
cheers,
jerry

```
```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

```
```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
```