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.

  • $\begingroup$ 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 ? $\endgroup$ – user3406207 Oct 27 '15 at 8:12
  • 1
    $\begingroup$ 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. $\endgroup$ – Richard Lyons Oct 27 '15 at 8:36

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.