# Signal Processing¶

## calculateHammingWeight¶

Warning

doxygenfunction: Cannot find function “calculateHammingWeight” in doxygen xml output for project “quadric.io SDK” from directory: _build/xml/

## delayAndSumFrame¶

Warning

doxygenfunction: Cannot find function “delayAndSumFrame” in doxygen xml output for project “quadric.io SDK” from directory: _build/xml/

Warning

doxygenfunction: Cannot find function “delayAndSumFrame” in doxygen xml output for project “quadric.io SDK” from directory: _build/xml/

## fft1d¶

fft1d implements the $$N$$-point Fast Fourier Transform (FFT) algorithm for calculating the discrete Fourier transform (DFT) of a 1D input signal. The are many variants of the DFT. In this library, we define the DFT as:

$A_k = \sum_{n=0}^{N-1}a_n\exp\left(-2\pi i \frac{nk}{N}\right)$

where $$k = 0, \dots, N - 1$$ and $$a_m$$ is the $$n$$ th element of the signal $$a$$ with length $$N$$.

fft1d can also execute the inverse Fast Fourier Transform (IFFT) algorithm for calculating the inverse discrete Fourier Transform (IDFT). This is enabled by setting the parameter inverse to true. The inverse discrete Fourier transform (IDFT) is defined as

$a_n = \frac{1}{N}\sum_{k=0}^{N-1}A_k\exp\left(2\pi i \frac{nk}{N}\right)$

where $$n = 0, \dots, N - 1$$.

Below you will find 3 overwrite versions of fft1d which expect different input. Here is a quick summary of the main differences:

1. fft1D can operate on ddr input and output tensors

2. fft1D can operate on ocm input tensor with precomputed wieghts as qVar_t variable.

3. fft1D can operate on ocm input tensor with weights computed internally.

See further detailed documentation of each version below.

Warning

doxygenfunction: Cannot find function “fft1d” in doxygen xml output for project “quadric.io SDK” from directory: _build/xml/

Warning

doxygenfunction: Cannot find function “fft1d” in doxygen xml output for project “quadric.io SDK” from directory: _build/xml/

Warning

doxygenfunction: Cannot find function “fft1d” in doxygen xml output for project “quadric.io SDK” from directory: _build/xml/

## rfft1d¶

rfft1d implements the $$N$$-point Fast Fourier Transform (FFT) algorithm for calculating the discrete Fourier transform (DFT) of multiple real valued 1D input signals. This makes use of the optimization where the FFT for two real sequences can be calculated by using just one FFT step. The math behind this two for one is defined as follows:

$\begin{split}\mathbf{Input}&\; x[n], y[n] \in \Re, n = 0, \dots,N-1 \\ \mathbf{Output}&\; X[k] = DFT_k^N\{x\}, Y[k] DFT_k^N\{y\} \\ &1.\; z[n] = x[n] + jy[n] \\ &2.\; Z[k] = DFT_k^N\{z\} \\ &3.\; X[k] = \frac{Z[k]+Z^*[N-k]}{2} \\ &4.\; Y[k] = -j \frac{Z[k]-Z^*[N-k]}{2} \\\end{split}$

Since $$X$$ and $$Y$$ are FFts of real-values sequences, $$X[k] = X^*[N-k]$$ and therefore the two sequences need to be computed for only $$0,\dots,N/2$$ points (inclusive). The optimization happens pair-wise for input channels and any odd numbered channel left does not make use of the optimization.

Warning

doxygenfunction: Cannot find function “rfft1d” in doxygen xml output for project “quadric.io SDK” from directory: _build/xml/

## fft2d¶

fft2d implements a 2d version of fft1d. The 2D DFT is defined as:

$A_{kl} = \sum_{m=0}^{M-1}\sum_{n=0}^{N-1}a_{mn}\exp\left(-2\pi i \left(\frac{mk}{M} + \frac{nl}{N}\right)\right)$

where $$k = 0, \dots, M - 1$$, $$l = 0, \dots, N - 1$$, and $$a_{mn}$$ is the $$(m,n)$$ element of the signal $$a$$ with shape $$(M, N)$$.

fft2d currently does not have inverse implemented.

Warning

doxygenfunction: Cannot find function “fft2d” in doxygen xml output for project “quadric.io SDK” from directory: _build/xml/

## hamming¶

Warning

doxygenfunction: Cannot find function “hamming” in doxygen xml output for project “quadric.io SDK” from directory: _build/xml/

Warning

doxygenfunction: Cannot find function “hamming” in doxygen xml output for project “quadric.io SDK” from directory: _build/xml/

Warning

doxygenfunction: Cannot find function “hamming” in doxygen xml output for project “quadric.io SDK” from directory: _build/xml/

## mvdrFrame¶

Warning

doxygenfunction: Cannot find function “mvdrFrame” in doxygen xml output for project “quadric.io SDK” from directory: _build/xml/