[hpsdr] DttSP ovsv.c possible optimization?

Robert McGwier rwmcgwier at gmail.com
Mon Aug 13 07:47:17 PDT 2007


Phil:

Thank you.  I moved the scaling by p->scale into the constructor and 
just commented out the scaling in the running routine (with a notation) 
in ovsv.c in both the DttSP in PowerSDR and in ab2kt/dttsp-ng branch in 
sdr_linux.

PLEASE anytime someone finds something like this, point it out.

Bob


Philip Covington wrote:
> ***** High Performance Software Defined Radio Discussion List *****
> 
> Frank, Bob,
> 
> In DttSP ovsv.c, the output of the ifft is normalized over each block.
>  The scaling factor is computed as scale = 1.0/(real) fftlen.
> 
> I am thinking that it should be possible to pre-scale the filter
> coefficients by the same factor (1.0/(real)fftlen).  Since the filter
> is only re-calculated on a filter change and not on a block by block
> basis, this would avoid fftlen (blocksize real + blocksize imag)
> multiplications per block.
> 
> So instead of
> 
> ...
>  /* scale */
>   for (i = 0; i < n; i++)
>     zovec[i].re *= scl, zovec[i].im *= scl;
> ...
> 
> in the function filter_OvSv(...)
> 
> you would apply the same scl factor (1.0/(real)fftlen) to the filter
> calculated in
> 
> newFiltOvSv(...)
> 
> since the fast convolution is a linear operation.
> 
> At least it saves some non-trivial multiplications per bock...
> 
> 73 Phil N8VB


-- 
AMSAT Director and VP Engineering. Member: ARRL, AMSAT-DL,
TAPR, Packrats, NJQRP, QRP ARCI, QCWA, FRC. ARRL SDR WG Chair
"If you're going to be crazy, you have to get paid for it or
else you're going to be locked up." Hunter S. Thompson

 1187016437.0


More information about the Hpsdr mailing list