我将尝试使用 MATLAB 符号来实际解释这一点。
但在此之前,我必须说,遍历属性有时仅限于某个时刻,即在第 1、第 2、第 3 时刻等中的遍历……
如果过程是独立同分布的,则它被承诺是遍历的。
现在,假设我们myRandomProcess
在 MATLAB 中有一个函数。
它返回一个长度n
为随机过程的随机属性的行向量。
现在,假设我们建立一个矩阵A
,它是米经过n矩阵,每行是使用上述函数创建的不同向量。
现在,使用 MATLAB 中的mean
和var
函数,我们可以计算过程的属性。
如果我们应用mean
很长的列(即,在每一行上),我们将得到米结果。
如果这些足够接近nmean
通过沿行 应用函数产生的结果(在每一列上)我们可以假设该过程在其第一时刻是遍历的。
现在,如果米和n接近无穷大“足够接近”可以像我们想要的那样小。
随机过程的大多数与其遍历性相关的性质可以通过观察其自相关函数来推断。
更新
简单的 MATLAB 代码来传达这个想法:
% Ergodic Random Process
% The Prbability dimension is a long rows (Vertical) and the time dimension
% is a long the columns (Horizontal).
numSamples = 1000;
numTrials = 1000;
% Ergodic Process - IID Random Samples
mRandomProcess = randn(numTrials, numSamples);
vTimeAverage = mean(mRandomProcess, 2);
vSampleAverage = mean(mRandomProcess, 1);
vTimeVariance = var(mRandomProcess, 1, 2);
vSampleVariance = var(mRandomProcess, 1, 1);
disp(['Ergodic Process Statistics']);
disp(['1st Moment Ergodicity - ', num2str(mean([vTimeAverage(:) - vSampleAverage(:)] .^ 2))]);
disp(['2nd Moment Ergodicity - ', num2str(mean([vTimeVariance(:) - vSampleVariance(:)] .^ 2))]);
% Un Ergodic Process
% The DC Level is drawed once per random process (Realization)
vDcLevel = (10 * rand(numTrials, 1)) - 5;
mRandomProcess = randn(numTrials, numSamples) + repmat(vDcLevel, [1, numSamples]);
vTimeAverage = mean(mRandomProcess, 2);
vSampleAverage = mean(mRandomProcess, 1);
vTimeVariance = var(mRandomProcess, 1, 2);
vSampleVariance = var(mRandomProcess, 1, 1);
disp(['Un Ergodic Process Statistics']);
disp(['1st Moment Ergodicity - ', num2str(mean([vTimeAverage(:) - vSampleAverage(:)] .^ 2))]);
disp(['2nd Moment Ergodicity - ', num2str(mean([vTimeVariance(:) - vSampleVariance(:)] .^ 2))]);
如您所见,第一个过程是遍历的(与任何 IID 过程一样),因为它等效于沿时间维度或样本维度计算其矩。
另一方面,第二个不是遍历的。
由于沿行的平均值为零(从均匀随机变量 [-5, 5] 中得出),但沿其列的平均值是均匀变量的特定实现的值。
我希望这能澄清它。