MATLAB:滚动z得分

时间:2011-11-21 18:34:46

标签: matlab

我有一个3650x1时间序列数据的列向量,从2000年1月1日到12月31日,按升序排列。这意味着观察结果是行,1/1/2000观测值位于第一行,12/31/2010观测值位于最后一行。

我还有一个偏移的行向量和一个名为z_scores的空矩阵:

offsets = [5 10 15 20]
z_scores = nan(3650, 4)

我正在尝试填充z_scoresz_scores中的每列对应一系列offset z分数。

例如,z_scores的第一列将包含5个周期的z分数。 z_scores的第二列将包含10个句点的z分数等。offset的第一个z_scores个标记将在每列中为NaN

目前,我循环遍历offsets,这很好。但是,如果可能的话,我希望在offset的每次迭代中使用矢量化解决方案。

for i=1:length(offset)

    z_scores(:, i) = (data() - mean()) / std() % help!

end

我有所有工具箱,所以我可以使用内置函数。如果有人想建议一个非矢量化的解决方案,我会很高兴看到它!

1 个答案:

答案 0 :(得分:0)

for i=1:length(offsets)
    N = offsets(i);
    z_scores(1:N, i) = zscore(data(1:N));
end