Let
zk=AW−k
z
k
A
W
k
, where
A=Aoeiθo
A
Ao
θo
,
W=Woe−(iφo)
W
Wo
φo
.
We wish to compute MM samples,
k=012…M−1
k
0
1
2
…
M
1
of
Xzk=∑n=0N−1xnzk−n=∑n=0N−1xnA−nWnk
X
zk
n
N
1
0
x
n
zk
n
n
N
1
0
x
n
A
n
W
nk
Note that
(k−n2=n2−2nk+k2)⇒(nk=12(n2+k2−k−n2))
k
n
2
n
2
2
n
k
k
2
n
k
1
2
n
2
k
2
k
n
2
, So
Xzk=∑n=0N−1xnA−nWn22Wk22W−k−n22
X
zk
n
N
1
0
x
n
A
n
W
n
2
2
W
k
2
2
W
k
n
2
2
Wk22∑n=0N−1xnA−nWn22W−k−n22
W
k
2
2
n
N
1
0
x
n
A
n
W
n
2
2
W
k
n
2
2
Thus,
Xzk
X
zk
can be compared by
- Premultiply
xn
x
n
by
AnWn22
A
n
W
n
2
2
,
n= 0 1 …N−1
n
0
1
…
N
1
to make
yn
y
n
- Linearly convolve with
W−k−n22
W
k
n
2
2
- Post multiply by to get
Wk22
W
k
2
2
to get
Xzk
X
zk
.
1. and 3. require NN
and MM operations respectively.
2. can be performed efficiently
using fast convolution.
W−n22
W
n
2
2
is required only for
−(N−1)≤n≤M−1
N
1
n
M
1
, so this linear convolution can be implemented with
L≥N+M−1
L
N
M
1
FFTs.
Wrap
W−n22
W
n
2
2
around L
when implementing with circular convolution.
So, a weird-length
DFT can be implemented relatively efficiently
using power-of-two algorithms via the chirp-z transform.
Also useful for "zoom-FFTs".