Search code examples
matlabsignalsfftnoisespectral-density

How to get the amplitude spectrum function from the PSD or ASD?


I am sorry in advance for a bit clumsy question, but I am really stucked in the simple, but not trivial problem of finding the amplitude spectrum function from the given PSD or ASD.

So, what I have initially is this ASD and PSD of the signal: enter image description here

What I want at the end: is a signal in time-series domain.

I've read a lot of forum pages and I knew that ifft here should take place in order to switch from the frequency domain to the time-domain (for ex. a good algorithm was presented here: https://www.researchgate.net/post/How-do-I-generate-time-series-data-from-given-PSD-of-random-vibration-input)

The thing is that I also already have a signal in the time domain (acquired from additional software), so I can check myself whether my ifft works correct or not.

To sum up, if everything works correctly, the ASD and PSD of the output time-series signal should coincide with the input ASD and PSD: enter image description here

My problem is that I can not calculate correctly the amplitude spectrum in the frequency domain U(f) in order to use it further in the ifft procedure:

enter image description here

Here on the graphs below the cyan curve is the U(f) as it should be and the grey curve as I have it. And hence the output ASD and PSD do not coincide with the input ones (right graph below) enter image description here

Could you tell me please which kind of transformation shall I use in order to get from the input ASD (or PSD) to the correct U(f)?

Here is the equation for the initial function:

y = (1e-12 * sqrt( (1e-3./f).^4 ./  ((1e-5./f).^4+1) + 1 + (f/1e-1).^4)).^2;

acc_freq_asd = abs(sqrt(y)); %convert to ASD
acc_freq_psd = abs(y); %convert to PSD

The plotted U(f) 'grey curve' was acquired by the following formula:

U_f = sqrt(2*acc_freq_psd.*tslength);

where tslength - is the signal length

But I've also used many more combinations (with the normalizations and etc) but none of them give the correct U(f).

Will be really appreciate for your help!


Solution

  • The procedure for the correct transition between ASD and Amplitude Spectrum (AS) is the following:

    1. Define the equivalent noise bandwidth:

    enter image description here

    1. Calculate single-sided AS:

    enter image description here

    This scheme works for me perfectly.