NFFT.jl icon indicating copy to clipboard operation
NFFT.jl copied to clipboard

Inconsistency between 1D NFFT and (N,1)-dimensional NFFT

Open JeffFessler opened this issue 6 years ago • 3 comments

The result of a 1D NFFT of length N and a (N,1)-dimensional NFFT are quite inconsistent. Here is a MWE:

using NFFT
M = 4
x1 = collect((-Int(M/2)):(Int(M/2)-1))/M
N1 = M
p1 = NFFTPlan(x1, N1) # 1D plan
f1 = ones(N1)
o1 = nfft(p1, complex(f1))

N2 = (M,1)
x2 = [x1 zeros(M)]
p2 = NFFTPlan(x2', N2)
f2 = ones(N2)
o2 = nfft(p2, complex(f2))

display(o1), display(o2)

Perhaps there is some minimum size requirement for each dimension of a multi-dimensional NFFT? If so then should NFFTPlan throw an error if that requirement is not met?

1D NFFT is working great for me but 2D NFFT is not behaving as I am expecting, so this (N,1) case is an example of a test I am doing to try to diagnose my 2D issues...

JeffFessler avatar Jun 10 '19 19:06 JeffFessler

Yes, there is a minimum size requirement because of the convolution. My proposal is that we catch the error within the constructor.

Out of curious: How does your Matlab NUFFT implementation handle this?

tknopp avatar Jun 11 '19 09:06 tknopp

1D NFFT is working great for me but 2D NFFT is not behaving as I am expecting

Could you elaborate on this? We have unit tests against the NDFT. We also apply the implementation to measured MRI data. This does, however, not imply that the implementation is bug-free. Maybe we could try getting some example test setting (N, alpha, m, M) where you could report the error that you get with your NUFFT implementation. Potentially we could also check the error compared to the NFFT C library. I currently have no runnable version of that though.

tknopp avatar Jun 11 '19 15:06 tknopp

My Matlab NUFFT checks to see if the zero-padded fft size (K) is smaller than the interpolation kernel width (J) and if it is then it produces a warning and decreases J accordingly. See line 53 here: https://github.com/JeffFessler/mirt/blob/master/nufft/nufft_init.m I don't recall if I ever tested it with a (N,1) case though :)

Perhaps my 2D NFFT tests were using a size below the minimum, so I will look into it more and get back to you if I find a MWE with a larger dimension.

JeffFessler avatar Jun 11 '19 15:06 JeffFessler