【问题标题】:reconstruct time series from given matrix从给定矩阵重建时间序列
【发布时间】:2014-04-22 15:33:37
【问题描述】:

假设我们正在从给定信号创建以下矩阵

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,提前感谢,我认为我应该对反对角线上的元素求和并除以其中的元素数量反对角线,但我怎么能通过代码做到这一点?提前谢谢

【问题讨论】:

    标签: matlab matrix


    【解决方案1】:

    您的原始向量位于矩阵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
    

    【讨论】:

    • 所以我不需要像 SSA 中那样平均吗?
    • 第一个解决方案给出了确切的答案,但无论如何我编辑了答案以沿对角线做一个适当的平均值。
    • 非常感谢,奇异谱分析的一个基本问题是对角平均
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多