#pragma once #if defined(TARGET_HAS_ThirdPartyFFTW3) #include #include // 1D Functions // void* dwt(std::vector &, int ,std::string , std::vector &, std::vector &); void* dwt1(const std::string& wname, std::vector& signal, std::vector& cA, std::vector& cD); void* dyadic_zpad_1d(std::vector& signal); double convol(std::vector& a1, std::vector& b1, std::vector& c); int filtcoef(const std::string& name, std::vector& lp1, std::vector& hp1, std::vector& lp2, std::vector& hp2); void downsamp(std::vector& sig, int m, std::vector& sigD); void upsamp(std::vector& sig, int m, std::vector& sigU); void circshift(std::vector& sigCir, int l); int sign(int x); void* idwt1(const std::string& wname, std::vector& X, std::vector& cA, std::vector& cD); int vecsum(std::vector& a, std::vector& b, std::vector& c); // 1D Symmetric Extension DWT Functions void* dwt_sym(std::vector& signal, int J, const std::string& nm, std::vector& dwtOutput, std::vector& flag, std::vector& length); void* dwt1_sym(const std::string& wname, std::vector& signal, std::vector& cA, std::vector& cD); void* idwt_sym(std::vector& dwtop, std::vector& flag, const std::string& nm, std::vector& idwtOutput, std::vector& length); void* symm_ext(std::vector& sig, int a); void* idwt1_sym(const std::string& wname, std::vector& x, std::vector& app, std::vector& detail); // Not Tested // 1D Stationary Wavelet Transform void* swt(std::vector& signal1, int J, const std::string& nm, std::vector& swtOutput, int& length); void* iswt(std::vector& swtop, int J, const std::string& nm, std::vector& iswtOutput); void* per_ext(std::vector& sig, int a); // 2D Functions void* branch_lp_dn(const std::string& wname, std::vector& signal, std::vector& sigop); void* branch_hp_dn(const std::string& wname, std::vector& signal, std::vector& sigop); void* branch_lp_hp_up(const std::string& wname, std::vector& cA, std::vector& cD, std::vector& x); // void* dwt_2d(std::vector > &, int , std::string , std::vector > &, std::vector &) ; // void* idwt_2d(std::vector > &,std::vector &, std::string ,std::vector > &); void* dyadic_zpad_2d(std::vector>& signal, std::vector>& mod); void* dwt_output_dim(std::vector>& signal, int& r, int& c); void* zero_remove(std::vector>& input, std::vector>& output); void* getcoeff2d(std::vector>& dwtoutput, std::vector>& cH, std::vector>& cV, std::vector>& cD, std::vector& flag, int& n); void* idwt2(const std::string& name, std::vector>& signal, std::vector>& cLL, std::vector>& cLH, std::vector>& cHL, std::vector>& cHH); void* dwt2(const std::string& name, std::vector>& signal, std::vector>& cLL, std::vector>& cLH, std::vector>& cHL, std::vector>& cHH); void* downsamp2(std::vector>& vec1, std::vector>& vec2, int rowsDn, int colsDn); void* upsamp2(std::vector>& vec1, std::vector>& vec2, int rowsUp, int colsUp); // 2D DWT (Symmetric Extension) Functions void* dwt_2d_sym(std::vector>& origsig, int J, const std::string& nm, std::vector& dwtOutput, std::vector& flag, std::vector& length); void* dwt2_sym(const std::string& name, std::vector>& signal, std::vector>& cLL, std::vector>& cLH, std::vector>& cHL, std::vector>& cHH); void* idwt_2d_sym(std::vector& dwtop, std::vector& flag, const std::string& nm, std::vector>& idwtOutput, std::vector& length); void* circshift2d(std::vector>& signal, int x, int y); void symm_ext2d(std::vector>& signal, std::vector>& temp2, int a); void* dispDWT(std::vector& output, std::vector>& dwtdisp, std::vector& length, std::vector& length2, int J); //2D Stationary Wavelet Transform void* swt_2d(std::vector>& sig, int J, const std::string& nm, std::vector& swtOutput); void* per_ext2d(std::vector>& signal, std::vector>& temp2, int a); // FFT functions double convfft(std::vector& a, std::vector& b, std::vector& c); double convfftm(std::vector& a, std::vector& b, std::vector& c); void* fft(std::vector>& data, int sign, size_t n); void* bitreverse(std::vector>& sig); void* freq(std::vector& sig, std::vector& freqResp); //New void* dwt1_sym_m(const std::string& wname, std::vector& signal, std::vector& cA, std::vector& cD);//FFTW3 for 2D void* idwt1_sym_m(const std::string& wname, std::vector& x, std::vector& app, std::vector& detail); void* dwt(std::vector& sig, int j, const std::string& nm, std::vector& dwtOutput, std::vector& flag, std::vector& length); void* idwt(std::vector& dwtop, std::vector& flag, const std::string& nm, std::vector& idwtOutput, std::vector& length); void* dwt_2d(std::vector>& origsig, int J, const std::string& nm, std::vector& dwtOutput, std::vector& flag, std::vector& length); void* dwt1_m(const std::string& wname, std::vector& signal, std::vector& cA, std::vector& cD); void* idwt_2d(std::vector& dwtop, std::vector& flag, const std::string& nm, std::vector>& idwtOutput, std::vector& length); void* idwt1_m(const std::string& wname, std::vector& x, std::vector& cA, std::vector& cD); void* dwt_output_dim2(std::vector& length, std::vector& length2, int j); #endif