Stationary and Wide Sense Stationary Process
A stochastic process {…, Xt-1, Xt, Xt+1, Xt+2, …} consisting of random variables indexed by time index t is a time series.
The stochastic behavior of {Xt} is determined by specifying the probability density or mass functions (pdf’s):
p(xt1, xt2, xt3, …, xtm)
for all finite collections of time indexes
{(t1, t2, …, tm), m < ∞}
i.e., all finite-dimensional distributions of {Xt}.
A time series {Xt} is strictly stationary if
p(t1 + τ, t2 + τ, …, tm + τ) = p(t1, t2, …, tm),
∀τ, ∀m, ∀(t1, t2, …, tm).
Where p(t1 + τ, t2 + τ, …, tm + τ) represents the cumulative distribution function of the unconditional (i.e., with no reference to any particular starting value) joint distribution. A process {Xt} is said to be strictly stationary or strict-sense stationary if τ doesn’t affect the function p. Thus, p is not a function of time.
A time series {Xt} is called covariance stationary if
E(Xt) = μ
Var(Xt) = σx2
Cov(Xt, Xt+τ) = γ(τ)
(All constant over time t)
Wide Sense Stationary Process
A random process is called weak-sense stationary or wide-sense stationary (WSS) if its mean function and its correlation function do not change by shifts in time.
μx(t) = μx
Rxx(t1, t2) = Rxx(t1 + α, t2 + α) for every α
Main Properties
- The mean and autocorrelation do not change over time.
- A wide-sense stationary (WSS) process has a constant mean, constant variance, and an autocorrelation function that depends only on the time difference (lag), not the absolute time.
For a WSS input to an LTI system, you are expected to study the output's statistical properties (such as mean, variance, and autocorrelation). You will find that the output signal is also a WSS signal. If your input signal has zero mean and unit variance, then the LTI output will have the same nature as the input signal, but:
- The mean of the output is scaled by the DC gain of the LTI system.
- The variance of the output is scaled by the total power gain of the system.
MATLAB Code to Check the Autocorrelation Property of a WSS Signal Over Time
%The code is developed by SalimWireless.comclc;
clear;
close all;
% Generate a wide-sense stationary (WSS) signal with 0 mean and unit variance
N = 1000; % Length of the signal
X = randn(1, N); % WSS signal
% Define the time indices t1 and t2
t1 = 0; % Time index 1
t2 = 100; % Time index 2
% Initialize autocorrelation value
Rx_val = 0;
% Loop to compute the sum for autocorrelation at (t1, t2)
for n = 1:N
% Ensure indices (n + t1) and (n + t2) are within bounds
if (n + t1 <= N) && (n + t2 <= N)
Rx_val = Rx_val + X(n + t1) * X(n + t2);
else
break; % Stop if indices go out of bounds
end
end
% Normalize by the length of the signal
Rx_val = Rx_val / N;
% Define the time indices t1 and t2
t3 = 100; % Time index 1
t4 = 200; % Time index 2
% Initialize autocorrelation value
Rx_val1 = 0;
% Loop to compute the sum for autocorrelation at (t1, t2)
for n = 1:N
% Ensure indices (n + t1) and (n + t2) are within bounds
if (n + t3 <= N) && (n + t4 <= N)
Rx_val1 = Rx_val1 + X(n + t3) * X(n + t4);
else
break; % Stop if indices go out of bounds
end
end
% Normalize by the length of the signal
Rx_val1 = Rx_val1 / N;
% Display the result
disp(['R_X(', num2str(t2), ') = ', num2str(Rx_val)]);
disp(['R_X(', num2str(t3), ', ', num2str(t4), ') = ', num2str(Rx_val)]);
Output
Copy the MATLAB Code above from here
MATLAB Code for the Output of an ARMA Filter When the Input is a WSS Signal
% Step 1: Get user input for WSS signal parameters
mu = input('Enter the mean of the WSS signal: ');
sigma2 = input('Enter the variance of the WSS signal: ');
N = 1000; % Length of signal
% Generate WSS signal with specified mean and variance
x = sqrt(sigma2) * randn(1, N) + mu;
% Step 2: Define ARMA filter coefficients
b = [1, -0.5]; % MA coefficients
a = [1, -0.8]; % AR coefficients (assumed stable)
% Step 3: Apply ARMA filter using built-in function
y = filter(b, a, x); % y[n] = (b/a) * x[n]
% Step 4: Calculate mean and variance
mean_x = mean(x);
mean_y = mean(y);
var_x = var(x);
var_y = var(y);
% Step 5: Display results
fprintf('Mean of input signal: %.4f\n', mean_x);
fprintf('Mean of output signal: %.4f\n', mean_y);
fprintf('Variance of input signal: %.4f\n', var_x);
fprintf('Variance of output signal: %.4f\n', var_y);
% Step 6: Plot input and output signals
figure;
subplot(2,1,1);
plot(x); title('Input Signal (WSS)'); ylabel('x[n]');
subplot(2,1,2);
plot(y); title('Output Signal (After ARMA Filter)'); ylabel('y[n]');
% Step 7: Autocorrelation comparison
figure;
subplot(2,1,1);
[R_x, lags_x] = xcorr(x - mean_x, 'biased');
plot(lags_x, R_x); title('Autocorrelation of Input x[n]');
xlabel('Lag'); ylabel('R_x');
subplot(2,1,2);
[R_y, lags_y] = xcorr(y - mean_y, 'biased');
plot(lags_y, R_y); title('Autocorrelation of Output y[n]');
xlabel('Lag'); ylabel('R_y');
Output
Enter the variance of the WSS signal: 1
Mean of input signal: -0.0214
Mean of output signal: -0.0545
Variance of input signal: 1.0593
Variance of output signal: 1.3152