The following Matlab files are given at: psd_syn_revD.zip

psd_syn.m is the main Matlab script.

The remaining scripts in the zip file are supporting functions.

It synthesizes an acceleration time history to satisfy a power spectral density function. It also calculates the corresponding velocity and displacement time histories. The scripts also perform trend removals so that the acceleration, velocity and displacement signals each oscillate about the zero baseline as a matched set.

The script also has an option for adding sine tones.

* * *

The steps in the synthesis process are:

1. Generate a white noise time history.

2. Take a Fourier transform of the white noise time history.

3. Scale the Fourier spectral components to meet the user’s PSD function.

4. Integrate acceleration to velocity, and velocity to displacement.

5. Perform trend removals, fade in and out during the above integration process so that the displacement oscillates about the zero baseline.

6. Differentiate the displacement to velocity, and the velocity to acceleration.

7. Add sine tones as an option.

8. Verify that the PSD of the resulting, synthesized acceleration reasonably satisfies the PSD specification.

The resulting acceleration time history could be used for a modal transient analysis.

The process is also similar to that which a vibration control computer would perform in order to drive a shaker table to a specified PSD.

* * *

A script for synthesizing a time history for a generic PSD is given at: generic_psd_syn.zip

generic_psd_syn.m is the main Matlab script.

It does not perform any integration. It is suitable for a force or pressure PSD.

* * *

See also:

Matlab Random Vibration Page

Random Vibration & Power Spectal Density Page

Please contact me if you have any questions.

Thank you,

Tom Irvine

Contact Form:

### Like this:

Like Loading...

fstart variable is missing in velox correction call inside add_sine_tones.m file

OK. I fixed the problem. Please download psd_syn_revA.zip from the main post.

Thank you,

Tom

Tom

Thanks. Isn’t it that the bandwidth of the sine tone affect the converted PSD amplitude? What bandwidth did you assume for sine tones?

The sine tone in the time domain is a pure tone. It does not depend on bandwidth.

The G^2/Hz level of the sine tone in the PSD does depend on the PSD spectral line bandwidth, however.

A PSD is rather unsuited for characterizing a pure sine tone. A Fourier transform would be a better choice. But sometimes there is a need to a plot a PSD of a sine-on-random time history.

Tom

Tom

If I want to convert the a PSD to 3 sigma Grms value, I would find the area under the curve. That is a_rms = sqrt(3 * delta_f * a_psd). This relation tells me the g value in the deterministic world depends on the delta_f of the PSD curve. Where do I go wrong?

Senthil

I think I asked my question in a wrong way. I will try to explain better. If you have a pure sine tone and when you try to convert to PSD, you will get a extremely sharp peak the bandwidth of this peak close to zero. In that case, what would be the area under the sine tone curve?

Pingback: Miner’s Cumulative Fatigue via Rainflow Cycle Counting « Vibrationdata

Hi Tom,

the variable np2 should change to np in line 194

I cleaned up the code. Please download: psd_syn_revC.zip from the main text.

Then let me know if you have further comments.

Thank you,

Tom Irvine