0
$\begingroup$

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?

Example: enter image description here

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]
}
}]
$\endgroup$
2
  • $\begingroup$ 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. $\endgroup$
    – Royi
    Commented Sep 20, 2020 at 8:05
  • $\begingroup$ @Royi, thanks, I'm just new to dsp, I'll google mvdr then. $\endgroup$
    – I.M.
    Commented Sep 20, 2020 at 9:33

1 Answer 1

2
$\begingroup$

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.

$\endgroup$
2
  • $\begingroup$ 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. $\endgroup$
    – I.M.
    Commented Sep 21, 2020 at 12:54
  • $\begingroup$ @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.. $\endgroup$
    – Mohammad M
    Commented Sep 22, 2020 at 6:49

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.