I am trying to compare two processing algorithms that I believe should be producing very similar results. I am processing acceleration signals over the course of the day and we expect to see a decrease in dominant frequency midday and an increase in the frequency at night. The frequency should be ~0.3 Hz and increase and decrease (by ~0.05) depending on the time of day.
My sampling frequency is 64 Hz and I am trying to run this analysis on the data we already have, so unfortunately we cannot run this experiment again with a lower sampling frequency.
First method using FFT:
1) I apply a bandpass filter on about a ~4 hour chunks of the signal allowing 0.1 Hz to 0.5 Hz. This leaves me with a signal of about 900,000 samples.
2) I then run a cross-correlation on this signal
3) I'm using MATLAB, and run the pwelch function on the cross-correlated signal. I run this with a gaussian window of length 3,500. 50% overlap.
4) I then attempt to smooth out the FFT spectrum with a Savitzky-Golay filter.
5) I fit the peak with the peakfit function
6) I extract the peak frequency within the 0.2 - 0.4 Hz range and call that the dominant frequency for that 4 hour chunk of time.
Second method using time-domain processing:
1) I run the same bandpass filter as above on the signal, same time chunk. I do not run a cross correlation.
2) I find all the peaks in the filtered time domain signal using the findpeaks function
3) I then find the difference between the successive peaks and create a histogram, which looks like a normal distribution centered on a certain period
4) I calculate the mean period of this distribution
5) I take the inverse of the mean period and call that the dominant frequency for that 4-hour chunk
I then run these algorithms on 3 weeks of a continuous acceleration signal and obtain very similar frequencies using both methods. However, about 25% of the peak extractions on the FFT seem wildly off and noisy. For example from point-to-point, meaning from one four-hour chunk to the next four-hour chunk, the frequency change is 50-100% different. On the other hand our second method (the time-domain method) never shows this kind of noise or variance and the transition to different time periods is much smoother and what we expect.
I feel like I can keep playing around with the window lengths/different windowing methods with the FFT, but I had a few questions first.
1) I haven't found any thing in the literature with a similar description to what I am doing with my time-domain method. Am I doing something completely unnecessary here? Is our method valid or just arbitrary? Should I just focus on doing FFT processing? This method makes sense to me, but I cannot back up this method with any relevant literature.
2) Because the time series of extracted frequencies using my FFT method is somewhat noisy, I am leaning towards moving forward with my time-domain method, making my first question more pressing to justify because we would like to publish these results.
3) I'd be happy to hear thoughts on either of these algorithms
Thanks!