matlabmeanfrequency-domain

Harmonic mean when a DC signal is present


I have an output from a noisy signal, saved as a set of cosines.

I have a set of frequencies from 0 to x Hz (x is a large number), and a set, of the same size, of amplitudes.

I want to work out the harmonic mean of the frequencies present, when the weighting of the frequency is the magnitude of the corresponding amplitude.

For example: If I have a set of frequencies [ 1 , 2 , 3] and amplitudes [ 10, 100, 1000 ] (such that the cosine with frequency 1 has amplitude 10, etc.). Then, the harmonic mean of the frequencies is 2.8647.

However, I run into problems when I have a zero frequency (a "DC" component) - the harmonic mean is just zero!

The real life problem is a very big set of cosines, starting with a zero frequency, going up to several GHz. Much of the signal is weighted in a portion of the spectrum and I want to compare a simple weighted mean of the spectrum with a harmonic mean.

The way around this (it seems a cheap way) is to ignore the zero frequency - it is only one frequency out of tens of thousands. But is there a correct way to do this?


Solution

  • Below is the equation for the weighted harmonic mean:

    Weighted harmonic mean

    Applied to your example it's:

    x = 1:3;
    w = logspace(1,3,3);  % [10 100 1000]
    sum(w)/sum(w./x); % 2.8220
    

    You can see that if one of the x values is 0, the sum in the denominator would be infinite. If you manually set the weight of this value to 0, you would have a 0/0 scenario in the bottom sum (which evaluates to NaN). Technically speaking - you can't have an x of 0 in the computation of this type of mean without getting a result of 0.

    I think it's quite clear that this isn't the right tool to handle a DC signal. Several things come to mind in order to get some meaningful information:

    At the end of the day, you need to decide what is the point you're trying to make with this, and then process the data accordingly.