Suppose we have a signal which contains several sinusoids with different known frequencies and noise. My object is to find the total power of these sinusoids. There are two methods for this problem, in my opinion.
1. Frequency domain method: Take the FFT of the signal, square the amplitudes of sinusoids and sum.
This method is simple and easy to implement. But one drawback is spectral leakage since the sinusoid frequency may not be multiples of the frequency resolution. This side effect could be reduced if we sum the squares of the amplitudes in a small range, say 6 bins, near the sinusoid frequency. This has the same effect of zeroing the frequency bins outside the sinusoid bins. Since zeroing bins is equivalent to frequency domain filtering using a "brickwall filter" (the actual situation is this filter is not brickwall at wall, see this for more information), it suffers from alias as a result of circular convolution. Such alias error can not be eliminated because we are filtering in frequency domain and neither the signal nor the impulse response of the "brickwall filter" can be zero-padded.
2. Time domain method: design filters with several very narrow passband that are centered at the sinusoid frequency, filter and sum the squares of output time samples.
This method does not suffer from spectral leakage and circular convolution alias, but it is complex since we have to design very narrow passband filters. When the sampling frequency is large, the number of coefficients may be prohibitly large. Though we can use multistage filter to reduce the filter order, but it further complicates the problem.
How do you comment on the above methods? Which one would you choose?
For me, I prefer the frequency domain method. But how to reduce the effects of spectral leakage and circular convolution alias so as to improve accuracy?
If the time domain method is used, is there a method to design such narrowband filter that are centered respectively at the known frequency?