# 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:

Spec_Pwr_Ave = P1 + P2 + P3;

Then plot your ‘Spec_Pwr_Ave’ power-spectral sequence.

• Thank you for the answer. I will try this and let you know how it goes. When you say 'average the 3 spectral power sequences', do you mean Spec_Pwr_Ave = (P1 + P2 + P3) /3 ? – user3406207 Oct 27 '15 at 8:12
• Compute the first-FFT’s output samples and square their magnitudes to produce the first power spectral samples P1. Next, compute the second-FFT’s output samples and square their magnitudes to produce the second power spectral samples P2. Finally, compute the third-FFT’s output samples and square their magnitudes to produce the third power spectral samples P3. Then compute Spec_Pwr_Ave = (P1 + P2 + P3) /3; I hope what I’ve written makes sense. – Richard Lyons Oct 27 '15 at 8:36