# Averaging multiple FFTs in matlab

I have multiple, real, audio signals which I am taking the FFTs. Although they don't come from the same recording, those signals represent the same thing (biologically). I was told that I could combine those ffts and average them together to get a good representation of the averaged signal. I am thinking of using the matlab function 'pwelch' for this purpose but I have lots of questions and I could not find answers by googling.

1. I have already averaged the ffts themselves with the matlab function 'pwelch' to decrease the noise. When combining them together, should I just use the output of a normal FFT rather than the output of pwelch (P)?

2. My signals are not exactly of the same length, which will make them not usable to combine in a matrix. Should I cut them all to the same length before averaging? Or is there a way round that?

3. How do I actually combine them? I was thinking something like this:

:

avg = (abs(P1) + abs(P2) + abs(P3)) / 3;


and then use the function pwelch like this:

[Pavg, Favg] = welch(avg,ones(SegmentLength,1),0,NFFTavg,fs,'power');


Any insights or help would be really appreciated. Thank you!

Welch’s method is a scheme to reduce the fluctuations (noise) in spectral power estimations when you have only a single time sequence with which to work. Because you have multiple time sequences, I’m not convinced that Welch’s method is what you want. If you have time sequences $x1(n)$, $x2(n)$, and $x3(n)$ of different lengths, I suggest you zero-pad the shorter sequences so they’re equal in length to the longest of the original $x1(n)$, $x2(n)$, and $x3(n)$ sequences. (It’s my guess that no time-domain Hanning or Hamming windowing is necessary.) Perform three FFTs and compute the three corresponding spectral power sequences $P1(m)$, $P2(m)$, and $P3(m)$. Finally, average the three spectral power sequences, element-by-element, as: