/cuda/blms/filterBLMS_CPU.h
C Header | 89 lines | 33 code | 15 blank | 41 comment | 0 complexity | 493ff59dd1b725944a9ac06eaeecfbf5 MD5 | raw file
Possible License(s): GPL-2.0
- /**
- * @file filterBLMS_CPU.h
- * @brief Filtr BLMS - wersja CPU, FFT na CPU (biblioteka FFTW).
- *
- * Deklaracja struktury filterBLMS_CPU oraz metod
- *
- * @author Jakub Ko?akowski (mailto:kolakowski.jakub@gmail.com)
- * @version 1.1
- */
-
- #ifndef FILTERBLMS_CPU_H
- #define FILTERBLMS_CPU_H
-
- #include "define.h"
- #include "cudacomplex.h"
- #include "fftw3.h"
- #include "signalReaderWriter.h"
-
- /**
- * @struct filterBLMS_CPU
- * @brief Filtr BLMS - wersja CPU, FFT na CPU (biblioteka FFTW).
- *
- * Opisuje filtr blokowy dzia?ajcy w oparciu o platform? CPU.
- */
- struct filterBLMS_CPU {
- int M; ///< d?ugoœ? filtru
- int B; ///< d?ugoœ? bloku danych
- float mi; ///< parametr mi filtru
- float beta; ///< parametr beta filtru
-
- cudacomplex *u; ///< sygna? wejœciowy u (input)
- cudacomplex *d; ///< sygna? wejœciowy d (desired)
- cudacomplex *e; ///< sygna? wyjœciowy e (error)
-
- cudacomplex *buf_u; ///< bufor zawierajacy dwa bloki sygnalu u
- cudacomplex *buf_d; ///< blok/bufor (dlugosc 2B) sygnalu d
- cudacomplex *buf_y; ///< blok/bufor (dlugosc 2B ze wzgledu na pozniejsze dzialanie ifft) sygnalu wyjsciowego y
- cudacomplex *buf_e; ///< blok/bufor (dlugosc 2B) sygnalu e
-
- cudacomplex *U; ///< bufor zawierajacy dwa bloki sygnalu u po dzialaniu FFT
- cudacomplex *U_sub; ///< bufory 'podsygnalow' wejsciowych po FFT (2B wektorow o dlugosci M/B w postaci jednego wektora: wymagania fftw)
- cudacomplex *Y; ///< probki 'podsygnalow' wyjsciowych przed IFFT
- cudacomplex *E; ///< bufor zawierajacy dwa bloki sygnalu e po dzialaniu FFT
-
- cudacomplex *lc; ///< wagi filtrów
-
- float *lambda; ///< parametry lambda
-
- // plany FFT (FFTW)
- fftwf_plan fftwfPlan_U; ///< plan FFT
- fftwf_plan fftwfPlan_Y; ///< plan IFFT
- fftwf_plan fftwfPlan_E; ///< plan FFT
-
- /**
- * Konstruktor struktury filterBLMS_CPU.<br>
- * Alokacja pami?ci, inicjalizacja zmiennych, wyznaczenie planów FFT.
- *
- * @param Nu - liczba próbek sygna?u
- * @param Msize - d?ugoœ? filtru
- * @param Bsize - d?ugoœ? bloku danych
- * @param miParam - parametr mi filtru
- * @param betaParam - parametr beta filtru
- * @param SRW - struktura zawierajca sygna?y wejœciowe i wyjœciowe
- */
- filterBLMS_CPU(int Nu, int Msize, int Bsize, float miParam, float betaParam, SignalReaderWriter SRW);
-
- /**
- * Destruktor struktury filterBLMS_CPU.
- */
- ~filterBLMS_CPU();
-
- /**
- * Metoda przeprowadzajca filtracj? adaptacyjn na CPU.
- *
- * @param Nu - liczba próbek sygna?u
- * @return void
- */
- void dataFiltering(int Nu);
-
- /**
- * Metoda zwalniajca pami?? po strukturze filterBLMS_CPU.
- *
- * @return void
- */
- void freeMemory();
-
- };
-
- #endif /* FILTERBLMS_CPU_H */