我不确定我是否理解这个问题。如果我遗漏了什么,请发表评论,我会根据需要尝试编辑/扩展/澄清。
首先,“均值”和“期望值”是相关的概念,但不是一回事。您可以找到一组样本或观察值的平均值。如果您正确采样/观察,平均值将接近预期值,这是基础随机过程的理论“真实平均值”。
当您对随机过程进行采样时,您最终会得到一组随机数。如果您再次对相同的过程进行采样,您最终会得到一组不同的数字。因此,您可以将每个样本视为一个随机变量(一个产生随机数的黑盒子);那么随机过程就是一系列随机变量。
这些随机变量可能是相关的;这意味着,直观地说,如果其中一个具有特定值,您可以使用它来预测其他一些样本的值。例如,您可能会发现,如果一个样本为正样本,则其相邻样本也往往为正样本。
在您的问题中,您说您有一组样本,y(t). 通常,您没有足够的信息来生成相关矩阵。但是,您可以这样做:
M = length(y);
C = zeros(M,M);
for i = 1:M
for j = 1:M
C(i,j) = mean(y(i)*y(j)); % Note that the mean is useless here,
% since y(i)*y(j) is scalar
end
end
要找到更接近底层过程的实际相关矩阵的近似值,您需要收集许多观察结果。假设您已将观察结果存储在矩阵的行中Y(每一行都是一组不同的观察值)。然后你可以这样做:
M = size(Y,2);
C = zeros(M,M);
for i = 1:M
for j = 1:M
C(i,j) = mean(Y(:,i).*Y(:,j));
end
end
为了测试这一点,让我们尝试对一个均值为零且方差为 1 的高斯过程进行采样。每次查看该过程时,我都会收集三个样本,并查看该过程 1000 次:
Y = randn(1000,3);
如果我用 matrix 运行上面的代码Y,我会得到这个相关矩阵:
0.9598 0.0590 0.0238
0.0590 0.9675 -0.0286
0.0238 -0.0286 1.0055
这是预期的(“真正的”相关矩阵是恒等式)。
关于在 Matlab 中计算时移,按如下方式在表格中排列向量是有帮助的(我假设和):t=1,2,…y(t)=10t
t | y(t) | y(t-1) | y(t-2)
| | |
1 | 10 | -- | --
2 | 20 | 10 | --
3 | 30 | 20 | 10
4 | 40 | 30 | 20
...
从表中可以清楚地看出,要找到yn=y(t-n),您从 的末尾剪切n元素y,并移动时间向量:
tn = t(n:end); % shifted time vector
yn = y(1:end-n); % shifted signal
以下代码提供了一个示例,它不假定整数时间或整数延迟:
t = 0:0.1:3; % time vector
y = exp(t/5); % y(t)
n = 0.8; % time delay
tn = t(t>n); % delayed time vector
yn = y(1:length(tn)); % delayed signal
plot(t,y,'r',tn,yn,'g'); % plot
这将产生以下图:
