# FFT Clarification

I'm working on an app to process Distributed Acoustic Sensing (DAS) data from oil wellbores. This data comes in a massive H5 format matrix. The columns represent channels or sensing positions in the fiber, the rows are the time series of the sensing recorded at a certain rate, and the values indicate a phase shift at that channel and time (like -30212, for example). My main goal is to create a heatmap showing frequencies on the X-axis and depth (channels) on the Y-axis, similar to the figure shown.

Here's the process I'm following:

1. For each channel, I'm averaging over an FFT (Fast Fourier Transform) size of the column. I slice the column into sections of the FFT size, overlap them by a certain percentage (like 50%), and then average these slices index by index. This gives me an array representing the column. AKA Time averaging.
2. I apply a windowing function to this array (like the Hann window).
3. I use a library to perform the FFT on this windowed array.
4. From this, I extract the magnitudes and bins.
5. I calculate normalized power as (magnitude^2)/(frequency resolution).

Finally, I convert this power into decibels (dB) using:

 finalPower = 10 * Math.log10(currentPower);


My issue is that the results I'm getting are oddly symmetrical across channels, which isn't what I expected. I'm stumped on what's going wrong.

If you can point me in the right direction and give me some good documents to learn from, I'd much appreciate it. Thank you so much.

• FFT produces a symmetric output magnitude. However, it should be through-the-channels (intra-channel), not accross them (inter-channel)? If you have perfect symmetry accross-the-channels, then may be you have mixed the columns vs rows...? Try transposing the input, to see if cross-channel symmetry is gone. And then, you can trim half of the FFT output sequence to the get rid of the remaining intra-channel symmetry. Dec 11, 2023 at 3:24
• No, I have triple-checked the data and the process. I'm sending the expected slices to the FFT. You're right about the symmetric output, but you are also right, I mean that for each channel I got almost the same result. Dec 11, 2023 at 10:22
• Your first step is time domain averaging which, will act as a low pass filter. Are you sure that's the right thing to do for your application? If you want to estimate the power spectrum, you average in energy in the frequency domain. This preservers the general spectral shape Dec 11, 2023 at 10:36
• Hi Hilmar, my signal is pretty stationary in time, so I think this is a good approach. Dec 11, 2023 at 12:56