# Performing time-frequency analysis (FTAN)

I am trying to do ambient noise tomography and I am quite confused on how to perform time-frequency analysis (FTAN) as shown in figure 13b and 13d of this paper by Bensen et al.. I am using Python and Obspy to do analysis. The closest I can find is time-frequency representation from Obspy but I'm not sure if they show the same thing. My question is how can I make similars FTAN figures from a signal?

Any help would be appreciated. Thank you.

• I don't know this technique very well, but my interpretation is that it appears to be more-or-less what ObsPy also gives you. I found this old paper pubs.geoscienceworld.org/ssa/bssa/article-pdf/82/6/2464/2707488/… that gives some more details. It certainly suggests that you would make the time-frequency plot, but replace your 'time' axis by distance/travel-time (making it a velocity), and replace frequency by 1/frequency, so you'd need to invert both axes carefully. But I may be missing some details here...
– Erik
Commented Mar 12, 2020 at 8:43
• See also this paper, pdfs.semanticscholar.org/636f/… , which states the same as what I suggest above.
– Erik
Commented Mar 12, 2020 at 15:04

## 2 Answers

If you are flexible with your choice in software, I would strongly recommend using Bob Herrmann's Computer Programs in Seismology for this work. http://www.eas.slu.edu/eqc/eqccps.html. This software package has nice workflows for doing ambient noise tomography and will save you a lot of time over python. For example, you can relatively quickly do group/phase velocity dispersion curve picks. It is also fairly easy to QC your data. Look at the documentation for 'Surface Wave Dispersion - Receiver Function Inversion' on http://www.eas.slu.edu/eqc/eqc_cps/CPS/CPS330.html for more details.

If you must use python, I would suggest writing your own Time-Frequency code as obspy's implementation is not very thoroughly documented, and you still need to get from Obspy's representation to dispersion curves. This will take some time, especially if you want a nice GUI for picking. This is why I recommenced the aforementioned software.

The keyword that you are looking for is a spectrogram, this is the plot of a frequency time analysis. If you search for that term for can find many examples of what you are after e.g. https://fairyonice.github.io/implement-the-spectrogram-from-scratch-in-python.html.

On a related note if you are interested in ambient noise tomography you might want to look at the MSnoise package https://github.com/ROBelgium/MSNoise