1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
function [v] = TOOL_DiagonalAveraging(A)
% This function TOOL_DiagonalAveraging diagonal averages time delayed
% data, which was originally univariate.
%
% A small example for the diagonal averaging:
% |x11 x12|
% |x21 x22| ----- diagonal averaging -----> [x11 x21+x12 x31+x22 x32]
% |x31 x32|
%
% [delayedTimeSeries] = TOOL_DiagonalAveraging(timeSeries, delayParameter)
%
% Input: 
%   * A     matrix / time delayed data
%
% Output: 
%   * v     diagonal averaged data

[n,m]=size(A);

if n == 1
    v = A;
    return
end

A = flipud(A);
v = zeros(1,n+m-1);

i = 1;
for d = -(n-1):(m-1)
    v(i) = mean(diag(A,d));
    i = i+1;
end

end