Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FEA] Add upsample/downsample operators #383

Closed
cliffburdick opened this issue Feb 16, 2023 · 5 comments
Closed

[FEA] Add upsample/downsample operators #383

cliffburdick opened this issue Feb 16, 2023 · 5 comments

Comments

@cliffburdick
Copy link
Collaborator

Up/downsample are frequently used in signal processing for sample rate conversion. We should add upsample and downsample operators that can lazily-evaluate these to do resampling without storing data to memory.

@ecarl65
Copy link

ecarl65 commented May 19, 2023

This would be great. And to implement it in an overlap-save fashion using FFTs.

@cliffburdick
Copy link
Collaborator Author

We have a separate ticket for a polyphase resampler that's somewhat of a high priority: #377

The upsample/downsample functions would simply by identical to what matlab does, but it should be faster since if you combine it in a single line nothing is written out to memory. ie, upsample(downsample(x, 2), 3) would do a 3/2 conversion without any writes to global memory. However, this leaves out the filtering step, and users that want to have a filter after upsampling usually want polyphase.

@ecarl65
Copy link

ecarl65 commented May 19, 2023

Ah, that makes sense. I think the Matlab one is a one-shot FFT based approach? Or maybe I'm thinking of numpy.

@cliffburdick
Copy link
Collaborator Author

@ecarl65 if you're interested the polyphase resampler and this issue should be in by today

@ecarl65
Copy link

ecarl65 commented Jul 6, 2023

This is great, thank you! I'll start playing with it and let you know if I have any feedback.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants