How to get a frequency vector in NUFFT MATLAB CODE?
6 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
The example is
t = [0:300 500.5:700.5];
S = 2*sin(0.1*pi*t) + sin(0.02*pi*t);
X = S + rand(size(t));
Y = nufft(X,t);
n = length(t);
f = (0:n-1)/n;
plot(f,abs(Y))
The frequency range here is [0,1],
My question is, for a noun-uniform (unknown) signal, How to calculate the frequency range? It is still 'f = (0:n-1)/n'?
I don not know how to get frequency vector for my data,that which is not in the normalized frequency range, In fact, it should be in the real frequency range (due to the non-uniform sampling rate).what the matlab code that i should use?
thanks so much .
Antworten (1)
Vinay
am 23 Sep. 2024
The ‘nufft’ uses the default frequencies with the form f(i) = (i-1)/n for a signal length of n. The nonuniform discrete Fourier transform treats the nonuniform sample points t and frequencies f as if they have a sampling period of 1 s and a sampling frequency of 1 Hz for the equivalent uniformly sampled data.
We can define the frequency vector by calculating average sampling frequency by taking the mean of the sampling intervals and calculating the normalized frequency vector as shown below
% calculate the sampling intervals
dt = diff(t);
% Estimate the average sampling frequency
fs_avg = 1 / mean(dt);
% Calculate the frequency vector
n = length(t);
f = (0:n-1) * (fs_avg / n);
Kindly refer to the below documentation of “nufft” for more details:
I hope this helps!
0 Kommentare
Siehe auch
Kategorien
Mehr zu Discrete Fourier and Cosine Transforms finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!