I am not sure if this question will be a little off-topic on this forum, that I will give it a try anyway, since it implies signal process arguments.
By using MATLAB
, I'm on my way to generate a turbulent wind field. This wind field is generally a Gaussian process with all the time series having 0 mean value and unitary standard deviation. I will shortly introduce you to the problem:
1) Discretize the space in Y-Z plane in a certain number of points Ny
, Nz
;
2) Discretize the time scale (generally 600s) with a proper time sample, dt = 0.15
;
3) Calculate distance among points;
4) Generate only positive frequency vector f = (0:length(t)/2-1)*df
;
5) Generate power spectra
$$ S_{ii}(f)=\frac{4\sigma_{ii}^{2}\left(L_{ii}/U\right)}{\left(1+6f\left(L_{ii}/U\right)\right)^{5/3}} $$ where $$ ii = u,v,w\,\, (speed\,\,components\,in\,x\,y\,z\,direction)$$ $$ U = const $$ $$ L_{ii} = const $$
6) Generate coherence matix
$$ Coh_{u}=\exp\left(-12\sqrt{\left(\frac{f*dist}{U}\right)^{2}+\left(0.12\frac{dist}{U}\right)^{2}}\right) $$ $$ Coh_{v,w}= \exp\left(-12\, dist\,\frac{f}{U}\right) $$
7) Generate random numbers with 0 mean and 1 std
nn_u = complex(normrnd(0,1,size(H_u)),normrnd(0,1,size(H_u)));
nn_v = complex(normrnd(0,1,size(H_v)),normrnd(0,1,size(H_v)));
nn_w = complex(normrnd(0,1,size(H_w)),normrnd(0,1,size(H_w)));
8) Cholesky factorization of the Coherence matrix (retrieves lower triangular factor)
9) Generate time series
$$ U = [real(fft(Coh_{u}*nn_{u}))\,\,imag(fft(Coh_{u}*nn_{u}))] $$ $$ V = [real(fft(Coh_{v}*nn_{v}))\,\,imag(fft(Coh_{v}*nn_{v}))] $$ $$ W = [real(fft(Coh_{w}*nn_{w}))\,\,imag(fft(Coh_{w}*nn_{w}))] $$
Now, after this consistent theorethical introduction, I can move towards the real matter: when calculating the standard deviations for eac time series (u,v,w components), they don't match the expected values $$ \sigma_{u} = 1 $$ $$ \sigma_{v} = 0.8 $$ $$ \sigma_{w} = 0.5 $$ because of several reasons:
- space discretization introducing smoothing effects
- time sample period
- power spectrum only within a short frequency range
Btw, I would like to, let's say, scale the time series in order they to be still Gaussian variables with zero mean and a standard deviation better approaching the expected values.
Do you have any hint?