user466534
user466534

Reputation:

reconstruct time series from given matrix

suppose that we are creating following matrix from given signal

function [ x ]=create_matrix1(b,l)
    n = length(b);
    m = n-l+1;
    x = zeros(m,l);
    for i=1:m
        x(i,:)=b(i:i+l-1);
    end;
end

with some window length,for example

 X=[2;1;3;4;5;7]

X =

     2
     1
     3
     4
     5
     7

>> B=create_matrix1(X,3)

B =

     2     1     3
     1     3     4
     3     4     5
     4     5     7

if we have given matrix and windows length ,how can i reconstruct original signal?let say i know that windows length is 3,thanks in advance,i think i should sum elements on anti diagonal and divide by number of elements in this anti diagonal ,but how can i do it by code?thanks in advance

Upvotes: 0

Views: 48

Answers (1)

Bas Swinckels
Bas Swinckels

Reputation: 18488

Your original vector is located along the top and right edge of your matrix B and can be reconstructed like so:

>> X_reconstructed = [B(1,1:end-1).'; B(:,end)]
X_reconstructed =
     2
     1
     3
     4
     5
     7

In case the matrix B is some noisy matrix and you actually want to do the averages along the diagonals:

>> BB = fliplr(B);
>> X_mean = arrayfun(@(i) mean(diag(BB,i)), size(B,2)-1:-1:-size(B,1)+1).'
X_mean =
     2
     1
     3
     4
     5
     7

Upvotes: 2

Related Questions