Dealing with NaN values in FFT

Hi, I'm working with a large data set of voxel information from MRI scans of multiple subjects, and as part of the analysis I use FFT. Prior to this, the data already goes through some modifications, removing specific values deemed too low (insignificant data) and replacing it with NaN values. After checking the results I realized there is an issue with FFT and NaN values. Is there some solution or workaround that someone perhaps knows that might help resolve this issue?

 Respuesta aceptada

Star Strider
Star Strider el 25 de Jul. de 2020

2 votos

If you have R2016b or later, the fillmissing function is an option.

8 comentarios

noam edelshtein
noam edelshtein el 26 de Jul. de 2020
Unfortunately unless I decide to replace nan with 0's or a different constant, it wont help. The nan replaced a prior existing value that was deemed insignificant, which I needed to ignore for the analysis, so replacing it or interpolating would not serve the purpose.
What I'd hoped for is something similar to nanmean, which allows the function to work without taking into consideration the nan values.
Star Strider
Star Strider el 26 de Jul. de 2020
Noiithing similar to nanmean is appropriate for the fft function, since it destroys the required regularity of the sampling points and data (with regularly-sampled data and constant sampling frequency).
It may be possible to eliminate the NaN values and still get the Fourier transform using the nufft function (R2020a and later). I have no experience with it (I have not yet used it) so my ability to help you with it is limited. It would be necessary to eliminate the corresponding points from both the signal vector and time (or other independent variable) vector.
Another option is to eliminate the NaN values and then use the resample function to resample them to a new time vector, then use fft. (This effectively interpolates, so that may not be an option for you.)
.
noam edelshtein
noam edelshtein el 27 de Jul. de 2020
Thats what I thought, but hoped to maybe be wrong. I'll look into the nufft function, it may help.
Thank you for the help, in this thread and many other answers you've given in other threads that have helped me!
Star Strider
Star Strider el 27 de Jul. de 2020
As always, my pleasure (here, and for the others as well)!
Jon
Jon el 8 de Feb. de 2022
Excellent I just ran into similar issue with NaN's. Using nufft worked perfectly for my problem. Thanks so much for making me aware of this new function, and pointing out how it could be applied in the case of having bad (NaN) data points.
Star Strider
Star Strider el 8 de Feb. de 2022
@Jon Thank you!
My pleasure!
A Vote would be appreciated!
Jon
Jon el 9 de Feb. de 2022
Done, thanks for the reminder, I had forgotten about the upvoting feature.
Star Strider
Star Strider el 9 de Feb. de 2022
Thank you!

Iniciar sesión para comentar.

Más respuestas (1)

Sugar Daddy
Sugar Daddy el 25 de Jul. de 2020
what if you remove NaNs from dataset
Suppose
X = [1 2 3 NaN 3 2 1];
X(isnan(X)) = []
X =
1 2 3 3 2 1

2 comentarios

noam edelshtein
noam edelshtein el 25 de Jul. de 2020
That would cause a change in dimensions of the matrix, and there is more analysis to come after this stage, so I would need to know precisely where the nan values were to reinsert them in the right places following the fft analysis.
I considered replacing with 0 but I think that will cause some form of change in the results of the analysis.
Maya Eyal
Maya Eyal el 22 de Feb. de 2021
I think this solution is not good, since it destroys the pattern in the data, and the whole reason we use the fft is to find the pattern.
I'm not an expert, just another one with the same NaN problem.
Unfortunatly, I use matlab 2019 so I don't have nufft function.
I'm not sure that interpulating the missing data will give me the pattern I want to find, but it seems I have no choice.

Iniciar sesión para comentar.

Etiquetas

Preguntada:

el 25 de Jul. de 2020

Comentada:

el 9 de Feb. de 2022

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by