Example #1
0
void
del_lmsr (LMSR lms)
{
  if (lms)
    {
      delvec_COMPLEX (lms->delay_line);
      delvec_COMPLEX (lms->adaptive_filter);
      safefree ((char *) lms);
    }
}
Example #2
0
/* deep-six the filter */
void
delFiltOvSv (FiltOvSv p)
{
  if (p)
    {
      delvec_COMPLEX (p->zfvec);
      delvec_COMPLEX (p->zivec);
      delvec_COMPLEX (p->zovec);
      delvec_COMPLEX (p->zrvec);
      fftwf_destroy_plan (p->pfwd);
      fftwf_destroy_plan (p->pinv);
      safefree ((char *) p);
    }
}
Example #3
0
void
delDttSPAgc (DTTSPAGC a)
{
	delCXB (a->buff);
	delvec_COMPLEX (a->circ);
	if (a)
		safefree ((char *) a);
}
Example #4
0
void
delCXB (CXB p)
{
  if (p)
    {
      if (CXBmine (p))
	delvec_COMPLEX (CXBbase (p));
      free ((char *) p);
    }
}
Example #5
0
void
del_blms (BLMS blms)
{
  if (blms)
    {
      fftwf_destroy_plan (blms->Xplan);
      fftwf_destroy_plan (blms->Yplan);
      fftwf_destroy_plan (blms->Errhatplan);
      fftwf_destroy_plan (blms->UPDplan);
      fftwf_destroy_plan (blms->Wplan);
      delvec_COMPLEX (blms->update);
      delvec_COMPLEX (blms->Update);
      delvec_COMPLEX (blms->What);
      delvec_COMPLEX (blms->Xhat);
      delvec_COMPLEX (blms->error);
      delvec_COMPLEX (blms->Errhat);
      delvec_COMPLEX (blms->Yhat);
      delvec_COMPLEX (blms->y);
      delvec_COMPLEX (blms->delay_line);
      safefree ((char *) blms);
    }
}
Example #6
0
FiltOvSv
newFiltOvSv(COMPLEX * coefs, int ncoef, int pbits) {
  int buflen, fftlen;
  FiltOvSv p;
  fftwf_plan pfwd, pinv;
  COMPLEX *zrvec, *zfvec, *zivec, *zovec;
  p = (FiltOvSv) safealloc(1, sizeof(filt_ov_sv), "new overlap/save filter");
  buflen = nblock2(ncoef - 1), fftlen = 2 * buflen;
  zrvec = newvec_COMPLEX_fftw(fftlen, "raw signal vec in newFiltOvSv");
  zfvec = newvec_COMPLEX_fftw(fftlen, "filter z vec in newFiltOvSv");
  zivec = newvec_COMPLEX_fftw(fftlen, "signal in z vec in newFiltOvSv");
  zovec = newvec_COMPLEX_fftw(fftlen, "signal out z vec in newFiltOvSv");

  /* prepare frequency response from filter coefs */
  {
    int i;
    COMPLEX *zcvec;
    fftwf_plan ptmp;

    zcvec = newvec_COMPLEX(fftlen, "temp filter z vec in newFiltOvSv");
    //ptmp = fftw_create_plan(fftlen, FFTW_FORWARD, pbits);
    ptmp =
      fftwf_plan_dft_1d(fftlen, (fftwf_complex *) zcvec,
			(fftwf_complex *) zfvec, FFTW_FORWARD, pbits);

#ifdef LHS
    for (i = 0; i < ncoef; i++)
      zcvec[i] = coefs[i];
#else
    for (i = 0; i < ncoef; i++)
      zcvec[fftlen - ncoef + i] = coefs[i];
#endif

    //fftw_one(ptmp, (fftw_complex *) zcvec, (fftw_complex *) zfvec);
    fftwf_execute(ptmp);
    fftwf_destroy_plan(ptmp);
    delvec_COMPLEX(zcvec);
  }

  /* prepare transforms for signal */
  //pfwd = fftw_create_plan(fftlen, FFTW_FORWARD, pbits);
  //pinv = fftw_create_plan(fftlen, FFTW_BACKWARD, pbits);
  pfwd = fftwf_plan_dft_1d(fftlen, (fftwf_complex *) zrvec,
			   (fftwf_complex *) zivec,
			   FFTW_FORWARD,
			   pbits);
  pinv = fftwf_plan_dft_1d(fftlen, (fftwf_complex *) zivec,
			   (fftwf_complex *) zovec,
			   FFTW_BACKWARD,
			   pbits);
  /* stuff values */
  p->buflen = buflen;
  p->fftlen = fftlen;
  p->zfvec = zfvec;
  p->zivec = zivec;
  p->zovec = zovec;
  p->zrvec = zrvec;
  p->pfwd = pfwd;
  p->pinv = pinv;
  p->scale = 1.0f / (REAL) fftlen;
  normalize_vec_COMPLEX (p->zfvec, p->fftlen, p->scale);
  return p;
}