【SS_Matlab】1_Random Variables

1. One-Dimensional Discrete rv

1.1 Finite

1.1.1 Uniform rv U(0,1)

function X = GenerateVariable(p1, p2, dt1, dt2)
% X = dt1 with p1, X = -dt2 with p2, X = 0 with (1-p1-p2)
U = rand;
X = dt1 * (U <= p1) - dt2 * (p1 < U) * (p1 + p2 >= U);
end

1.1.2 Binomial X = B(N, p)

function B = Binary(p)
% B = 1 with p, B = 0 with (1-p)
U = rand;
B = (U <= p);
end
% generate rv X
function X = Binomial(NbBinary, p)
X = 0;
for n = 1: NbBinary
    X = X + (rand <= p);
end
%  another approach
function X = Binomial2(NbBinary, p) 
X = sum(rand(1, NbBinary) <= p);
end

1.2 Infinite :Poisson

function X = Poisson(lambda)
X = 0;
U = rand;
while (U > exp(-lambda))
    X = X + 1;
    U = U * rand;
end
end

2. One-Dimensional Continuous rv

2.1 Exponential Law

function X = Exp(alpha)
X = - log(rand)/alpha;
end

2.2 Rayleigh rv

function X = Rayleigh
X = sqrt(-2 * log(rand));
end

2.3 Gaussian

function X = Gaussian(mu, sigma)
% randn: N(0,1)
X = sigma * randn + mu;
end

3. Multi-Dimensional Random Vector

3.1 Basic Two-Dimension

 

function rep = RandomVector(sigma1, sigma2, rho)
MatrixL = [sigma1, 0; rho * sigma2, sigma2 * sqrt(1 - rho^2)];
rep = MatrixL * randn(2, 1);
end

3.2 Multi-Dimention: Cholesky Decomposition of Variance-Covariance Matrix

 

chol(A);% get upper triangular matrix
L = chol(A)';% get lower tri-matrix

3.3 Eigenvalue Decomposition of Variance-Covariance Matrix (Principal component Analysis)

[P, D] = eig(A); % P -> eigenvectors' matrix
% D -> corresponding eigenvalues' matrix
L = P * D.^(0.5);

3.3 Gaussian Random Vector

function Y = GaussianVector(n, Lambda, mu)
Y = chol(Lambda)' * randn(n, 1) + mu;
end
posted on 2020-03-27 02:55  sophhhie  阅读(215)  评论(0编辑  收藏  举报