DSP - 就地计算


内存的有效利用对于设计快速硬件来计算 FFT 非常重要。术语“就地计算”用于描述这种内存使用情况。

时间序列抽取

在这个结构中,我们以二进制格式表示所有点,即用 0 和 1 表示。然后,我们反转这些结构。之后我们得到的序列称为位反转序列。这也称为时间序列抽取。八点 DFT 的就地计算以表格格式显示,如下所示 -

积分 二进制格式 逆转 同等积分
0 000 000 0
1 001 100 4
2 010 010 2
3 011 110 6
4 100 001 1
5 101 101 5
6 110 011 3
7 111 111 7
时间序列抽取

频率序列抽取

除了时间序列之外,N点序列还可以用频率来表示。让我们通过四点序列来更好地理解它。

令序列为 $x[0], x[1], x[2], x[3], x[4], x[5], x[6], x[7]$。最初,我们将两个点分为一组。从数学上来说,这个序列可以写成:

$$x[k] = \sum_{n = 0}^{N-1}x[n]W_N^{nk}$$

现在让我们制作一组序列号 0 到 3 和另一组序列号 4 到 7。现在,在数学上这可以表示为;

$$\displaystyle\sum\limits_{n = 0}^{\frac{N}{2}-1}x[n]W_N^{nk}+\displaystyle\sum\limits_{n = N/2}^ {N-1}x[n]W_N^{nk}$$

让我们用 r 代替 n,其中 r = 0, 1 , 2….(N/2-1)。从数学上来说,

$$\displaystyle\sum\limits_{n = 0}^{\frac{N}{2}-1}x[r]W_{N/2}^{nr}$$

我们首先取前四个点 (x[0], x[1], x[2], x[3]),并尝试用数学方式表示它们,如下所示 -

$\sum_{n = 0}^3x[n]W_8^{nk}+\sum_{n = 0}^3x[n+4]W_8^{(n+4)k}$

$= \lbrace \sum_{n = 0}^3x[n]+\sum_{n = 0}^3x[n+4]W_8^{(4)k}\rbrace \times W_8^{nk}$

现在$X[0] = \sum_{n = 0}^3(X[n]+X[n+4])$

$X[1] = \sum_{n = 0}^3(X[n]+X[n+4])W_8^{nk}$

$= [X[0]-X[4]+(X[1]-X[5])W_8^1+(X[2]-X[6])W_8^2+(X[3]-X [7])W_8^3$

我们可以进一步将其分成两个部分,这意味着我们可以将它们分成 2 点序列,而不是将它们分成 4 点序列。