In [1]:
#Random number generation, mean and variance 
srand(0);
N=100;

In [2]:
# Uniform [0,1]
X=rand(N,1);
N=100;
sigma2=2;

In [3]:
# Gaussian rv (zero-mean, variance sigma2
X=sqrt(sigma2)*randn(N,1);
mu=mean(X);
s2= var(X);

In [ ]:
# Gaussian random vectors, covariance and correlation matrices ======
N=10000;
mu=zeros(3,1);
C = [4 0 1; 0 5 0; 1 0 2];
X = mvnrnd(mu,C,N);
CHat = cov(X);
RHat = corrcoef(X);

# Autocovariance function (biased, unbiased, non-normalized, normalized)==
N = 300;
nlags = N-1;
variance = 3;
sigma = sqrt(variance);
X = sigma*randn(N,1);
figure(1)
subplot(311)
[acf1,lags]=xcov(X,nlags,'biased');
plot(lags,acf1,'k')
ylabel('Autocovariance (biased)')
axis tight
subplot(312)
[acf2,lags]=xcov(X,nlags,'unbiased');
plot(lags,acf2,'k')
ylabel('Autocovariance (unbiased)')
axis tight
subplot(313)
[acf3,lags]=xcov(X,nlags,'coeff');
plot(lags,acf3,'k')
xlabel('Lag')
ylabel('Autocorrelation')
axis tight

# Solution of linear systems of equations ==============
N  = 1000;
p  = 3;
mu = 0.5;
B  = [.8 -2 .3]';
X  = randn(N,p);
Y  = mu + X*B + randn(N,1);
X  = [ones(N,1) X];
BHat = inv(X'*X) * (X'*Y) #Via matrix inversion
BHat = X \ Y              #Via Matlab backslash operator
[Q,R] = qr(X,0);          #Via QR decomposition (R is upper triangular)
BHat = R\(Q'*Y)

# Univariate AR(p) process simulation and estimation ==============
clear all
N = 1000;
X = zeros(N,1);
a = .78;
variance = .25;
sigma = sqrt(variance);
for t=2:N
    X(t) = a*X(t-1) + sigma*randn;
end
figure(1),clf,set(gcf,'color',[1 1 1])
plot(1:N,X,'k')
xlabel('Time t','fontsize',12),ylabel('X_t','fontsize',12)
box off

# Estimation via conditional MLE (Ordinary Least-Squares - OLS) ======
Y=X(2:end);
Z=X(1:end-1);
aHat = Y\Z;

# Estimation via the Burg maximum entropy method ============
[H,sigma2Hat,K] = arburg(X,3); 
aHat = -H(2:end)

# Convolution ==========================================
# Simple convolution example: flip, shift, multiply and sum (dot product)
# Note: for large sequences, convolutions are preferably implemented as multiplication in the
# Fourier domain.
clear all, close all
N=1000;
h=ones(10,1);
h=flip(h);
m=length(h);
E=randn(N,1);
E = [zeros(m,1);E];
X=zeros(N+m,1);
j=0;
for k = m:N+m
    j=j+1;
    X(k) = h'*E(j:j+m-1);
end
X=X(m+1:end);# In this example and in Homework 1, we do not normalize X 
E=E(m+1:end);
figure(1),clf,set(gcf,'color',[1 1 1])
plot(1:N,E,'k',1:N,X,'r')