MATERNOISE Realizations of the Matern process and variations, including fBm. [with A. Sykulski] Z=MATERNOISE(DT,N,SIGMA,ALPHA,LAMBDA) simulates a length N complex- valued Matern random process Z having variance SIGMA^2, slope parameter ALPHA, and damping parameter LAMBDA. DT is the sample interval. Note that LAMBDA is understood to have the same units as the inverse sample interval 1/DT. For values of LAMBDA greater than about 1/DT, the process becomes essentially white noise. Thus typical values will have LAMBDA<(1/DT). Z=MATERNOISE(DT,N,A,ALPHA,0) generates realizations of fractional Brownian motion. In this case, the third input argument is the spectral amplitude A, not the standard deviation SIGMA. Z=MATERNOISE(DT,[N,M],SIGMA,ALPHA,LAMBDA) generate M realizations of the process, so that Z is of size N x M. For details, including the fast generation method described below, see: Lilly, Sykulski, Early, and Olhede, (2017). Fractional Brownian motion, the Matern process, and stochastic modeling of turbulent dispersion. Nonlinear Processes in Geophysics, 24: 481--514. __________________________________________________________________ Extensions Several extensions of the basic Matern form are supported, all of which are discussed in more detail in MATERNSPEC. Oscillatory Matern Z=MATERNOISE(DT,N,SIGMA,ALPHA,LAMBDA,NU) Generalized Matern (+ optional oscillations) Z=MATERNOISE(DT,N,SIGMA,ALPHA,LAMBDA,GAMMA,'general') Z=MATERNOISE(DT,N,SIGMA,ALPHA,LAMBDA,GAMMA,NU,'general') Extended Matern (+ optional oscillations) Z=MATERNOISE(DT,N,SIGMA,ALPHA,LAMBDA,MU,'extended') Z=MATERNOISE(DT,N,SIGMA,ALPHA,LAMBDA,MU,NU,'extended') Composite Matern Z=MATERNOISE(DT,N,SIGMA,ALPHA,LAMBDA,MU,NU,'composite') __________________________________________________________________ Real-valued processes By default MATERNOISE generates a complex-valued process. X=MATERNOISE(...,'real') instead generates a real-valued Matern process. This also works with any of extended versions described above. __________________________________________________________________ Multiple parameter values The input arguments SIGMA, ALPHA, etc. may all be either scalars, or arrays of the same length, say K. Z=MATERNOISE(DT,N,SIGMA,ALPHA,...), with at least one of SIGMA, ALPHA, etc. being an array of length K, returns a matrix Z that is N x K. Z=MATERNOISE(DT,[N M],SIGMA,ALPHA,...) then gives Z of size N x M x K. __________________________________________________________________ Algorithm MATERNOISE uses a Cholesky matrix decomposition method which makes the autocovariance matrix of the generated process Z have exactly the form of a sampled Matern autocovariance function, for nonzero LAMBDA, or of fractional Brownian motion for LAMBDA=0. Note that since the Cholesky decomposition requires O(N^3) operations, generating very long time series (>2000 points or so) may be slow. __________________________________________________________________ Fast algorithm MATERNOISE(...,'fast') uses a fast approximate generation algorithm described in Lilly et al. (2017). This method works by making use of the known analytic form for the Matern impulse response function. In the fast algorithm, oversampling is used to ensure that the structure of the Green's function is accurately resolved. [Z,ERR]=MATERNOISE(...,'fast') also returns the fractinal error ERR involved in the fast algorithm's approximation of the autocovariance sequence. This is the total squared error between the actual and approximated autocovariance sequences, divided by the summed squared magnitude of the actual autocovariance sequence. Note that this is for testing purposes only, as it substantially slows down the algorithm. __________________________________________________________________ See also MATERNSPEC, MATERNCOV, MATERNIMP, MATERNFIT. 'maternoise --t' runs some tests. 'maternoise --f' generates a sample figure. Usage: z=maternoise(dt,N,sigma,alpha,lambda); z=maternoise(dt,N,sigma,alpha,lambda,'fast'); [z,err]=maternoise(dt,N,sigma,alpha,lambda,'fast'); z=maternoise(dt,[N,M],sigma,alpha,lambda,mu,nu); z=maternoise(dt,N,A,alpha,0); __________________________________________________________________ This is part of JLAB --- type 'help jlab' for more information (C) 2013--2020 A.M. Sykulski and J.M. Lilly --- type 'help jlab_license' for details