从给定矩阵重建时间序列

时间:2014-04-22 06:47:29

标签: matlab matrix

假设我们正在从给定信号

创建以下矩阵
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

有一些窗口长度,例如

 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

如果我们给出矩阵和窗口长度,我怎么能重建原始信号?让我知道窗口长度是3,提前谢谢,我想我应该对反对角线上的元素求和并除以此元素的数量反对角线,但我怎么能通过代码来做呢?先谢谢

1 个答案:

答案 0 :(得分:2)

您的原始矢量位于矩阵B的顶部和右侧边缘,可以像这样重建:

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

如果矩阵B是一些噪声矩阵,你实际上想要沿着对角线做平均值:

>> 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