freqest.h
1 /***************************************************************************
2  Copyright (C) 2002-2015 Kentaro Kitagawa
3  kitagawa@phys.s.u-tokyo.ac.jp
4 
5  This program is free software; you can redistribute it and/or
6  modify it under the terms of the GNU Library General Public
7  License as published by the Free Software Foundation; either
8  version 2 of the License, or (at your option) any later version.
9 
10  You should have received a copy of the GNU Library General
11  Public License and a list of authors along with this program;
12  see the files COPYING and AUTHORS.
13 ***************************************************************************/
14 #ifndef FREQEST_H_
15 #define FREQEST_H_
16 
17 #include "spectrumsolver.h"
18 
19 #ifdef HAVE_LAPACK
20 
21 //! Frequency estimation. Base class for MUSIC and EIG.
22 //! \sa MUSIC, EigenVectorMethod
24 public:
25  FreqEstimation(tfuncIC ic, bool eigenvalue_method, bool mvdl) :
26  SpectrumSolver(), m_eigenvalue_method(eigenvalue_method), m_mvdl_method(mvdl), m_funcIC(ic) {}
27 protected:
28  virtual void genSpectrum(const std::vector<std::complex<double> >& memin,
29  std::vector<std::complex<double> >& memout,
30  int t0, double tol, FFT::twindowfunc windowfunc, double windowlength);
31  const bool m_eigenvalue_method;
32  const bool m_mvdl_method;
33  const tfuncIC m_funcIC;
34 };
35 
36 //! MUltiple SIgnal Classification.
37 class MUSIC : public FreqEstimation {
38 public:
39  MUSIC(tfuncIC ic = &icMDL) : FreqEstimation(ic, false, false) {}
40 protected:
41 };
42 
43 //! Eigen vector method.
44 //! \sa MUSIC, MVDL
46 public:
47  EigenVectorMethod(tfuncIC ic = &icMDL) : FreqEstimation(ic, true, false) {}
48 protected:
49 };
50 
51 //! Capon MLM / MVDL.
52 class MVDL : public FreqEstimation {
53 public:
54  MVDL() : FreqEstimation(&SpectrumSolver::icAIC, true, true) {}
55 protected:
56 };
57 
58 #endif// HAVE_LAPACK
59 
60 #endif /*FREQEST_H_*/

Generated for KAME4 by  doxygen 1.8.3