Given a sequence of length $2N$ $$ x[1], x[2], \dots, x[N], \dots x[2N] $$ We can construct the following matrix along with its SVD. $$ M = \begin{pmatrix} x[1] & x[2] & \cdots & x[N] \\ x[2] & x[3] & \cdots & x[N+1] \\ \vdots & \vdots & \ddots & \vdots \\ x[N+1] & x[N+2] & \cdots & x[2N] \end{pmatrix} = U S V^T $$ Small singular values can be removed and matrix recomputed. Input signal can be replaced with e.g. 1st and last cols of $M$.
Unfortunately, I do not know the name and motivation behind this procedure. Where can I find a reference with a detailed description of such a filter? What is matrix $M$ called?
Test code in Mathematica:
(* define test signal and noise *)
length = 2^10 ;
amplitude = 1.0 ;
signal = amplitude*Sin[2*Pi*0.2741*Range[2*length]] ;
SeedRandom[1] ;
level = 0.1 ;
noise = RandomVariate[NormalDistribution[0.0,level*amplitude],2*length] ;
input = signal + noise ;
(* filter *)
matrix = Most[Partition[input, length, 1]];
{u,s,v} =SingularValueDecomposition[matrix,Tolerance -> 10^-15 ] ;
keep = 2 ;
s = Take[s,keep,keep] ;
u = Take[u,All,keep] ;
v= Take[v,All, keep] ;
matrix = u.s.Transpose[v] ;
result = {First[matrix],Rest[Last[matrix]]} //Flatten;
(* compare *)
Grid[{
{
ListPlot[signal,ImageSize ->300],
ListPlot[input,ImageSize ->300],
ListPlot[result,ImageSize ->300]
},
{
Periodogram[signal,Automatic,Automatic,KaiserWindow[#,Pi/2]&,PlotRange -> All, ImageSize ->300],
Periodogram[input,Automatic,Automatic,KaiserWindow[#,Pi/2]&,PlotRange -> All, ImageSize ->300],
Periodogram[result,Automatic,Automatic,KaiserWindow[#,Pi/2]&,PlotRange -> All, ImageSize ->300]
}
}]