[time-nuts] Re: Simple simulation model for an OCXO?

Neville Michie namichie at gmail.com
Tue May 10 08:37:17 UTC 2022


The use of forward then reverse Fourier transforms is one of the most important 
achievements of the Fourier transform. When one data set is convolved with 
another data set, it appears impossible to undo the tangle.
But if the data is transformed into the Fourier domain, serial division can separate
the data, and transformation back will yield the original data.
See: "The Fourier transform and its applications” by Ron Bracewell.

Cheers, Neville Michie

> On 10 May 2022, at 16:20, Carsten Andrich <carsten.andrich at tu-ilmenau.de> wrote:
> 
> First, thanks to everyone who chimed in on this highly interesting topic.
> 
> On 04.05.22 18:49, Attila Kinali wrote:
>> FFT based systems take a white, normal distributed noise source,
>> Fourier transform it, filter it in frequency domain and transform
>> it back. Runtime is dominated by the FFT and thus O(n*log(n)).
>> There was a nice paper by either Barnes or Greenhall (or both?)
>> on this, which I seem currently unable to find. This is also the
>> method employed by the bruiteur tool from sigma-theta.
>> 
>> Biggest disadvantage of this method is, that it operates on the
>> whole sample length multiple times. I.e it becomes slow very
>> quickly, especially when the whole sample length is larger
>> than main memory. But they deliver exact results with exactly
>> the spectrum / time-correlation you want.
> 
> If you happen to find the paper, please share a reference. I'm curious about implementation details and side-effects, e.g., whether implementing the filter via circular convolution (straightforward multiplication in frequency-domain) carries any penalties regarding stochastic properties due to periodicity of the generated noise.
> 
> Also, any reason to do this via forward and inverse FFT? AFAIK the Fourier transform of white noise is white noise, because the underlying Gaussian is an Eigenfuntion of the transform. Generating in time-domain as follows (Python code using NumPy)
> 
> N = int(1e6) # number of samples
> A = 1e-9     # Allan deviation for tau = 1 sec
> # generate white noise in time-domain
> X = np.fft.rfft(np.random.normal(0, A * 3**-0.5, N))
> # multiply with frequency response of desired power-law noise and apply inverse Fourier transform
> # NOTE: implements circular convolution
> x = np.fft.irfft(X * H)
> 
> should yield the same properties as generating the white noise directly in frequency-domain (there may be an off-by-one-or-two in there regarding variance scaling), but the latter will halve the computational cost:
> 
> # generate white noise directly in frequency-domain
> # NOTE: imaginary components at DC and Nyquist are discarded by irfft()
> X = np.random.normal(0, A * 6**-0.5 * N**0.5, N+2).view(np.complex128())
> # multiply with frequency response of desired power-law noise and apply inverse Fourier transform
> # NOTE: implements circular convolution
> x = np.fft.irfft(X * H)
> 
> 
> On 05.05.22 18:34, Magnus Danielson via time-nuts wrote:
>> Both is being revisioned and 1139 just went out for re-balloting process after receiving ballotting comments and 1193 is just to get approved to be sent to balloting.
> Any details you can share regarding the changes over the current version? Are drafts publicly available?
> 
> 
> Best regards,
> Carsten
> _______________________________________________
> time-nuts mailing list -- time-nuts at lists.febo.com -- To unsubscribe send an email to time-nuts-leave at lists.febo.com
> To unsubscribe, go to and follow the instructions there.




More information about the Time-nuts_lists.febo.com mailing list