Is it possible to approximate given skewness and kurtosis values using an IFFT? 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


Frequency content
RMS
Skewness, and
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?

Thanks!
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&gt;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.