Hi, I have a periodogram of a signal comprised of five sin signals: http://i29.tinypic.com/2uhu3nn.jpg Now I need to calculate the amplitudes from that logarithmic periodogram and I know the sum of the five amplitudes that I need. Are the high points of the periodogram directly related to the amplitudes? Is the relational relation direct - in other words, is the multiplier 1 (I'm supposing no)? Thank you very much for your time!
How to calculate the amplitudes of five sin-signals from a periodogram?
Started by ●February 27, 2008
Reply by ●February 28, 20082008-02-28
What is the poeriodogram method you used ? Is that the standard method ? Did you apply any windowing ? The peaks are not proportional to amplitudes in all the techniques used for periodogram. In general, if y = 20 log10(x) then x =10**(y/20) . So if 'y' is the peak value (in dB), then x will give you the amplitude. Now the question is: what is 'x' ? Can you post the formula(s) you used ? This will help me decide on your questions. On Feb 28, 6:01 am, "Edwards" <lemminkaei...@yahoo.com> wrote:> Hi, > > I have a periodogram of a signal comprised of five sin signals:http://i29.tinypic.com/2uhu3nn.jpg > > Now I need to calculate the amplitudes from that logarithmic periodogram > and I know the sum of the five amplitudes that I need. Are the high points > of the periodogram directly related to the amplitudes? Is the relational > relation direct - in other words, is the multiplier 1 (I'm supposing no)? > > Thank you very much for your time!
Reply by ●February 28, 20082008-02-28
I just used the standard periodogram in Matlab: plot(periodogram(data1)); Aside from that, I know the values of the five peaks and I know the sum of the five amplitudes. The approximate values of the five peaks are 458, 328, 778, 712 and 932 (the pic says otherwise, but it is actually of a slightly different dataset) and the sum of the amplitudes (which are integers) is 41. Thank you for taking the time in answering, much appreciated!>What is the poeriodogram method you used ? > >Is that the standard method ? Did you apply any windowing ? > >The peaks are not proportional to amplitudes in all the techniques >used for periodogram. > >In general, if y = 20 log10(x) then x =10**(y/20) . So if 'y' is the >peak value (in dB), then x will give you the amplitude. Now the >question is: what is 'x' ? > >Can you post the formula(s) you used ? This will help me decide on >your questions. > > >On Feb 28, 6:01 am, "Edwards" <lemminkaei...@yahoo.com> wrote: >> Hi, >> >> I have a periodogram of a signal comprised of five sinsignals:http://i29.tinypic.com/2uhu3nn.jpg>> >> Now I need to calculate the amplitudes from that logarithmicperiodogram>> and I know the sum of the five amplitudes that I need. Are the highpoints>> of the periodogram directly related to the amplitudes? Is therelational>> relation direct - in other words, is the multiplier 1 (I'm supposingno)?>> >> Thank you very much for your time! > >
Reply by ●February 28, 20082008-02-28
On 28 Feb, 02:01, "Edwards" <lemminkaei...@yahoo.com> wrote:> Hi, > > I have a periodogram of a signal comprised of five sin signals:http://i29.tinypic.com/2uhu3nn.jpg > > Now I need to calculate the amplitudes from that logarithmic periodogram > and I know the sum of the five amplitudes that I need. Are the high points > of the periodogram directly related to the amplitudes? Is the relational > relation direct - in other words, is the multiplier 1 (I'm supposing no)?You can not find the amplitude of sinusoidals from periodograms. First of all, you need to account for a scaling factor in the FFT when computing the periodogram. You need to check the docs for your particular implementation if you need to do that yuorself or if that has already deen done. There is also the question of windowing. If the periodogram was computed using a non-rectangular window, that would distort amplitudes a bit compared to what you might expect. Again, check thr docs about what happens in your case. The main problem is spectral leakage. If one sinusoidal is at a frequency which does not fall exactly on a Fourier frequecy, the eergy of that sinusoidal will be distributed across *all* the Fourier components, 'distorting' the amplitude measurements. The effect is demonstrated by this matlab script: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% N=32; f = (N/2+1)/(2*N); fv= (0:N-1)/N; tv=(0:N-1); s=sin(tv*f*2*pi); S=fft(s)/sqrt(N); clf plot([f,f],[0,1],'r',f,1,'or'); % Plot the 'true' spectral line hold on; stem(fv,abs(S)); % Plot the DFT of the data sequence title('Amplitude spectra') P1=s*s'; % Signal energy in temoral domain P2=S*S'; % Signal energy in frequency domain disp(['Temporal energy = ',num2str(P1)]) disp(['Frequency energy = ',num2str(P2)]) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Rune
Reply by ●February 28, 20082008-02-28
First of all, huge thanks for taking the time to answer. I'm not sure that spectral leakage is going to be a problem as I know that the amplitudes are integers and that their sum is 41. In other words, all I need to find out is how Matlab's periodogram can be used to get even semi-close approximates of the amplitudes of the five sinusoidals based on the data samples that I have of the sum signal. -Ed>You can not find the amplitude of sinusoidals from periodograms. > >First of all, you need to account for a scaling factor in the >FFT when computing the periodogram. You need to check the docs >for your particular implementation if you need to do that yuorself >or if that has already deen done. > >There is also the question of windowing. If the periodogram >was computed using a non-rectangular window, that would >distort amplitudes a bit compared to what you might expect. >Again, check thr docs about what happens in your case. > >The main problem is spectral leakage. If one sinusoidal >is at a frequency which does not fall exactly on a Fourier >frequecy, the eergy of that sinusoidal will be distributed >across *all* the Fourier components, 'distorting' the amplitude >measurements. > >The effect is demonstrated by this matlab script: > >%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% >N=32; >f = (N/2+1)/(2*N); >fv= (0:N-1)/N; > >tv=(0:N-1); >s=sin(tv*f*2*pi); >S=fft(s)/sqrt(N); > >clf >plot([f,f],[0,1],'r',f,1,'or'); % Plot the 'true' spectral line >hold on; >stem(fv,abs(S)); % Plot the DFT of the data sequence >title('Amplitude spectra') > > >P1=s*s'; % Signal energy in temoral domain >P2=S*S'; % Signal energy in frequency domain > >disp(['Temporal energy = ',num2str(P1)]) >disp(['Frequency energy = ',num2str(P2)]) > >%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% > > > >Rune >
Reply by ●February 28, 20082008-02-28
On 28 Feb, 18:15, "Edwards" <lemminkaei...@yahoo.com> wrote:> all I need to find out is how Matlab's periodogram can be > used to get even semi-close approximates of the amplitudes of the five > sinusoidals based on the data samples that I have of the sum signal.In that case I suggest you play around with the periodogram function, using signals you make yourself, and see how close you can get to the amplitudes. Once you have developed a feel for how close you can get (and a sense of how to get there) using signals you made yourself (and thus where you know all the relevant details), you can have a go at the signal you want to analyze. Rune
Reply by ●February 28, 20082008-02-28
On Feb 27, 8:01�pm, "Edwards" <lemminkaei...@yahoo.com> wrote:> Hi, > > I have a periodogram of a signal comprised of five sin signals:http://i29.tinypic.com/2uhu3nn.jpg > > Now I need to calculate the amplitudes from that logarithmic periodogram > and I know the sum of the five amplitudes that I need. Are the high points > of the periodogram directly related to the amplitudes? Is the relational > relation direct - in other words, is the multiplier 1 (I'm supposing no)? > > Thank you very much for your time!Hello Edwards, Since you are making the periodogram, you then have the original data. How about fitting 5 sinusoids directly to the data[1]. If you have more than 15 samples, your system becomes overdetermined and it shouldn't be too hard to do this. After you find your model paramters, subtract the predicted sum of sinusoids away from the raw data to see the residual. If this small - then you are set. If it is large, then your model is incorrect or incomplete. Clay [1] one way that works quite well for this type of thing is differential correction.
Reply by ●February 28, 20082008-02-28
On Feb 28, 9:15 am, "Edwards" <lemminkaei...@yahoo.com> wrote:> First of all, huge thanks for taking the time to answer. > > I'm not sure that spectral leakage is going to be a problem as I know that > the amplitudes are integers and that their sum is 41. > > In other words, all I need to find out is how Matlab's periodogram can be > used to get even semi-close approximates of the amplitudes of the five > sinusoidals based on the data samples that I have of the sum signal.The peaks in an FFT are not necessarily directly related to the spectral amplitudes by a constant factor if "spectral leakage" is present. The error from looking at just the peaks could be over 35% (depending on the exact window shape and frequency/bin offset, etc.) The periodogram peaks, due to segmenting, could be even farther removed from the spectral amplitudes, especially at very low frequencies. A lower peak could easily be due to a larger sinusoid. Knowing the frequencies, or frequency estimation, might help one to reduce the amplitude estimation error. IMHO. YMMV. -- rhn A.T nicholson d.0.t C-o-M
Reply by ●February 29, 20082008-02-29
On Feb 28, 5:49 pm, "Ron N." <rhnlo...@yahoo.com> wrote:> On Feb 28, 9:15 am, "Edwards" <lemminkaei...@yahoo.com> wrote: > > > First of all, huge thanks for taking the time to answer. > > > I'm not sure that spectral leakage is going to be a problem as I know that > > the amplitudes are integers and that their sum is 41. > > > In other words, all I need to find out is how Matlab's periodogram can be > > used to get even semi-close approximates of the amplitudes of the five > > sinusoidals based on the data samples that I have of the sum signal. > > The peaks in an FFT are not necessarily directly related to > the spectral amplitudes by a constant factor if "spectral > leakage" is present. The error from looking at just the > peaks could be over 35% (depending on the exact window shape > and frequency/bin offset, etc.) The periodogram peaks, > due to segmenting, could be even farther removed from the > spectral amplitudes, especially at very low frequencies. > A lower peak could easily be due to a larger sinusoid. > > Knowing the frequencies, or frequency estimation, might > help one to reduce the amplitude estimation error. > > IMHO. YMMV. > -- > rhn A.T nicholson d.0.t C-o-MDon't forget that even if the sinusoid falls exactly on an FFT bin there is still the coherent loss associated with the window. If you know the window type and the SNR is high enough you can use adjacent FFT bins to do frequency and amplitude interpolation - this would also assume the tones are far enough apart to avoid spectral leakage to the main bin of another sinusoid of interest. Cheers, David
Reply by ●February 29, 20082008-02-29






