# find out ideal window size for coherence analysis - python

Is there a general formula I could use to calculate the ideal window for the window argument in the function scipy.signal.coherence, maybe taking into account sampling rate and number of time points?

For example, if I acquired data at a sampling rate of $$1.5\texttt{Hz}$$ and I have $$100$$ time points, what window size would you recommend?

• It depends what frequency resolution you are happy with, i.e. how many discrete frequencies you think are relevant to you. These frequencies will span $$0$$ to $$f_s/2$$, and you will get a coherence value for each.
• The frequency resolution is computed as $$f_s/N$$, $$N$$ being the size of the analysis window.

With that in mind, a here is an example:

$$N = 10$$ will give you $$N/2 = 5$$ values for your coherence function (the negative frequency part is discarded), at the following discrete frequencies spaced $$f_s/N = 0.15\texttt{Hz}$$ apart: $$0\texttt{Hz}, 0.15\texttt{Hz}, 0.30\texttt{Hz}, 0.45\texttt{Hz}, 0.60\texttt{Hz}$$

Note, you can also play around with the noverlap argument. Typical values would be $$N/2$$ or $$N/4$$

• Thanks a lot for the explanation, it was very helpful! What would you consider a reasonable frequency resolution to be? I'm mostly interested in very low frequencies (below 0.25 Hz). I believe matlab uses a default L=N/4.5, but I'm not sure what the rationale is for that choice. Jan 25 at 22:34
• I don't know your application, so you need to define what a reasonable frequency resolution is based on your requirements. You can also compute the coherence on the full $100$ points. By the way, I'm assuming you know what coherence is, you do know it's computed between two signals right? Your question mentions "data", hence my question.
– Jdip
Jan 25 at 23:15