# SVD Based Noise Filter on the Samples in Toeplitz Form

Given a sequence of length $$2N$$ $$x, x, \dots, x[N], \dots x[2N]$$ We can construct the following matrix along with its SVD. $$M = \begin{pmatrix} x & x & \cdots & x[N] \\ x & x & \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 ;
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]
}
}]

• What do you expect? The ideas are similar to MVDR and other Noise Sub Space methods. They work well for harmonic signals. Less for general signals. – Royi Sep 20 '20 at 8:05
• @Royi, thanks, I'm just new to dsp, I'll google mvdr then. – I.M. Sep 20 '20 at 9:33

## 1 Answer

The matrix M is called a Toeplitz matrix and they have a certain type of decomposition (but X should be the ACF and not the signal itself), so the resulting U and V would be a Vandermonde matrix which are very similar to Discrete Fourier transform.

So the whole process is similar to find spectrum of your signal and putting zero in bins which their power are below a threshold.

• thank you for the reference! Indeed, the transpose of M is Toeplitz. I'm not sure about thresholding. I've tried to estimate the frequency with and without filtering and it seems to be consistently more accurate with filtering, i.e. bins near the peak are effected. – I.M. Sep 21 '20 at 12:54
• @I.M., You are right about thresholding, I didn't read the code because i'm not familiar with Mathematica, but now I've read it, if I got that correctly, it keeps only 2 most strongest poles. it's similar to auto-regressive model.. – Mohammad M Sep 22 '20 at 6:49