PageRenderTime 61ms CodeModel.GetById 26ms RepoModel.GetById 1ms app.codeStats 0ms

/cuda/blms/filterBLMS_CPU.h

http://dyplom-transwersalne-filtry-adaptacyjne.googlecode.com/
C Header | 89 lines | 33 code | 15 blank | 41 comment | 0 complexity | 493ff59dd1b725944a9ac06eaeecfbf5 MD5 | raw file
Possible License(s): GPL-2.0
  1. /**
  2. * @file filterBLMS_CPU.h
  3. * @brief Filtr BLMS - wersja CPU, FFT na CPU (biblioteka FFTW).
  4. *
  5. * Deklaracja struktury filterBLMS_CPU oraz metod
  6. *
  7. * @author Jakub Ko?akowski (mailto:kolakowski.jakub@gmail.com)
  8. * @version 1.1
  9. */
  10. #ifndef FILTERBLMS_CPU_H
  11. #define FILTERBLMS_CPU_H
  12. #include "define.h"
  13. #include "cudacomplex.h"
  14. #include "fftw3.h"
  15. #include "signalReaderWriter.h"
  16. /**
  17. * @struct filterBLMS_CPU
  18. * @brief Filtr BLMS - wersja CPU, FFT na CPU (biblioteka FFTW).
  19. *
  20. * Opisuje filtr blokowy dzia?ajšcy w oparciu o platform? CPU.
  21. */
  22. struct filterBLMS_CPU {
  23. int M; ///< d?ugo&#x153;? filtru
  24. int B; ///< d?ugo&#x153;? bloku danych
  25. float mi; ///< parametr mi filtru
  26. float beta; ///< parametr beta filtru
  27. cudacomplex *u; ///< sygna? wej&#x153;ciowy u (input)
  28. cudacomplex *d; ///< sygna? wej&#x153;ciowy d (desired)
  29. cudacomplex *e; ///< sygna? wyj&#x153;ciowy e (error)
  30. cudacomplex *buf_u; ///< bufor zawierajacy dwa bloki sygnalu u
  31. cudacomplex *buf_d; ///< blok/bufor (dlugosc 2B) sygnalu d
  32. cudacomplex *buf_y; ///< blok/bufor (dlugosc 2B ze wzgledu na pozniejsze dzialanie ifft) sygnalu wyjsciowego y
  33. cudacomplex *buf_e; ///< blok/bufor (dlugosc 2B) sygnalu e
  34. cudacomplex *U; ///< bufor zawierajacy dwa bloki sygnalu u po dzialaniu FFT
  35. cudacomplex *U_sub; ///< bufory 'podsygnalow' wejsciowych po FFT (2B wektorow o dlugosci M/B w postaci jednego wektora: wymagania fftw)
  36. cudacomplex *Y; ///< probki 'podsygnalow' wyjsciowych przed IFFT
  37. cudacomplex *E; ///< bufor zawierajacy dwa bloki sygnalu e po dzialaniu FFT
  38. cudacomplex *lc; ///< wagi filtrów
  39. float *lambda; ///< parametry lambda
  40. // plany FFT (FFTW)
  41. fftwf_plan fftwfPlan_U; ///< plan FFT
  42. fftwf_plan fftwfPlan_Y; ///< plan IFFT
  43. fftwf_plan fftwfPlan_E; ///< plan FFT
  44. /**
  45. * Konstruktor struktury filterBLMS_CPU.<br>
  46. * Alokacja pami?ci, inicjalizacja zmiennych, wyznaczenie planów FFT.
  47. *
  48. * @param Nu - liczba próbek sygna?u
  49. * @param Msize - d?ugo&#x153;? filtru
  50. * @param Bsize - d?ugo&#x153;? bloku danych
  51. * @param miParam - parametr mi filtru
  52. * @param betaParam - parametr beta filtru
  53. * @param SRW - struktura zawierajšca sygna?y wej&#x153;ciowe i wyj&#x153;ciowe
  54. */
  55. filterBLMS_CPU(int Nu, int Msize, int Bsize, float miParam, float betaParam, SignalReaderWriter SRW);
  56. /**
  57. * Destruktor struktury filterBLMS_CPU.
  58. */
  59. ~filterBLMS_CPU();
  60. /**
  61. * Metoda przeprowadzajšca filtracj? adaptacyjnš na CPU.
  62. *
  63. * @param Nu - liczba próbek sygna?u
  64. * @return void
  65. */
  66. void dataFiltering(int Nu);
  67. /**
  68. * Metoda zwalniajšca pami?? po strukturze filterBLMS_CPU.
  69. *
  70. * @return void
  71. */
  72. void freeMemory();
  73. };
  74. #endif /* FILTERBLMS_CPU_H */