MATLAB: Combining and averaging multiple FFTs

fftsignal processing

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.
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)?
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?
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!

Best Answer

Truncating the time-domain recordings to be the lengths of the shortest recording is preferable if they all have the same sampling frequency. If they have different sampling frequencies, you will have to resample them to the same sampling frequency, because otherwise the fft will have different frequency resolutions.
Using the ensemble average of the fft of biological signals is a common technique in biomedical engineering. See for example Demonstration of Fourier Transforms: Signal Avergaing. I would simply use the regular fft. Designing a digital filter to filter baseline drift and high-frequency noise before you do the fft is certainly an option, providing you use the same filter on all signals.
Related Question