I have time domain data for a signal that behaves randomly but has non-random (non-Gaussian?) skewness and kurtosis values of ~0.9 and ~7.4, respectively.

The FFT of the signal shows that it's not broadband random -- it's generally flat below 100 Hz and tapers off at about -3 dB/oct above 100 Hz up to a Nyquist of 400 Hz.

I would like to create a synthesized signal that is statistically equivalent (or approximately so) to my reference signal, with nearly identical

  1. Frequency content
  2. RMS
  3. Skewness, and
  4. Kurtosis.

Additionally, I have extrapolated PSD amplitudes up to 10 kHz that I would like to add into the mix and invert to the time domain.

I have done this in the past satisfying only (1) and (2) by using, for example, MATLAB's randn() function to create random white noise (namely to create random phase angles), applying an FFT to the white noise, scaling its frequency components to match a desired FFT spectrum, and performing an IFFT to convert to time domain. The rand() function approaches a skewness and kurtosis of 0.0 and 3.0, respectively, so my initial thought was to create white noise with a specified skewness and kurtosis.

I have tried this same procedure using MATLAB's pearsnd() function, which allows one to specify skewness and kurtosis values, but the above procedure doesn't seem to preserve the skewness and kurtosis of the scaled time domain signal. I believe the IFFT assumes a Gaussian distribution. Is there a work-around for this?


  • $\begingroup$ Is it possible to provide representative plots? Would it also be possible to mention the physical process that leads to such signals? $\endgroup$
    – A_A
    Apr 25, 2019 at 7:50
  • $\begingroup$ @A_A Thank you for your response. It's aeroacoustic data. What sort of plots are you thinking of? I cannot provide any of the actual data, and I don't think plots would enhance what I've described in my main post. My primary aim is to synthesize new data whose (normalized) histogram closely matches the reference signal's. $\endgroup$
    – gdbb89
    Apr 25, 2019 at 21:30
  • $\begingroup$ Knowing that it is aeroacoustic data would be enough I guess. I would be interested in a plot of the signal you are trying to approximate (or replicate). And yes, it is very likely that it is generated by a non-linear process. How much would this affect the answer do you think? Do you have reason to believe that the non-stationarity would not be an issue here? $\endgroup$
    – A_A
    Apr 30, 2019 at 15:03
  • $\begingroup$ Terribly late response, apologies for that. There are (were) good chunks of data, say 30 to 60 seconds' worth, that were stationary with the non-Gaussian skewness and kurtosis values. Given that, I could repeat this process of synthesizing new data to match each 30- to 60-second segment with the prescribed skewness and kurtosis values. My hope is that prescribing the skewness value to the synthesized data would account for the majority of the distortion (non-even oscillation about zero), and the kurtosis would give it its "peaked"-ness. $\endgroup$
    – gdbb89
    Aug 2, 2019 at 3:33
  • $\begingroup$ No worries. Thanks for the reminder. I gave it a shot anyway with what I had in mind when I asked. $\endgroup$
    – A_A
    Aug 4, 2019 at 21:03

1 Answer 1


When you know that the process that generated the data is non-linear (and you are lucky to be in full control of the acquisition), you can try Attractor Reconstruction.

This technique attempts to reconstruct the trajectory a system may be taking through phase space, that results in the complex signal that is being recorded. The signal itself, may be showing chaotic behaviour with seemingly unpredictable spikes or a trace that looks like broadband noise. However, through Taken's theorem it is possible to find a "delay embedding" within which this behaviour is "explainable".

In practice, this looks like two (for example) pointers over the signal, separated by some distance (or delay) $k$. Given a one dimensional signal $x[n]$, this results in a two dimensional signal composed of $x[n], x[n+k]$ with $n,k \in \mathbb{N}, k>0$. If $k$ (and the number of dimensions, here 2) is chosen correctly, the subsets of points (here $x[n], x[n+k]$) as plotted in a Cartesian plain, would reveal an attractor.

So, given this analyical framework, the task of "synthesizing a signal" becomes that of recovering the attractor, capturing it in a model and then playing it back at will, to generate the data.

As you may suspect, the choice of $k$ and number of dimensions is the main headache here. Theoretically, this should be equal to the fractal dimension of the attractor (which is not always known) but there are many different metrics and methods for estimating that.

An example of the whole process is available in this paper or, much more extensively in Kantz's book.

Finally, in more recent years, that "modeling" part of the attractor from above could not have escaped the Machine Learning treatment, so for the more up to date approach, you could refer to something like this one or even a GAN approach. These are everywhere these days.

You can see the...attraction here, especially when you are in control of the experimental conditions. I think that something like this would capture the dynamics you are after in a better way and manage to reproduce the conditions you are (were (?)) facing.

Hope this helps.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.