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

Implement NNFFT #78

Open
tknopp opened this issue Jan 30, 2022 · 2 comments
Open

Implement NNFFT #78

tknopp opened this issue Jan 30, 2022 · 2 comments
Labels

Comments

@tknopp
Copy link
Member

tknopp commented Jan 30, 2022

I added the NNFFT in AbstractNFFTs but actually NFFT.jl is missing an implementation. So this is the feature request issue.

@tknopp tknopp added the feature label Jan 30, 2022
@YichengDWu
Copy link

Any hints on how to implement it?

@tknopp
Copy link
Member Author

tknopp commented Mar 21, 2023

Sure. The question is if you have some experience with the NFFT, which would be necessary to understand the details. Reading https://arxiv.org/abs/2208.00049 would be the first step.

The NNFFT is then described in https://www-user.tu-chemnitz.de/~potts/paper/ndft.pdf section 1.3.

On a high level the NFFT can be written as a product of three matrices BFD. The NNFFT is can be expressed as BQFHD where the H is also a convolution-like matrix and Q is a diagonal correction matrix. So in principle it should be possible to reuse most of the code. In practice, however, I expect this to be quite tedious work since the functions in https://github.com/JuliaMath/NFFT.jl/blob/master/src/convolution.jl and need to be decoupled a little bit from the NFFTPlan. In order to do so, one might need to group certain parts of the NFFTPlan into structs, that capture all the parameters and temporary vectors, that are needed for a certain operation.

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

No branches or pull requests

2 participants