可行的。但仅适用于奇数。它将有无限的解决方案。N
例子:
xx0x1=[x0,x1,0]=0.5(1+13–√)+j0.5(1−13–√)=0.5(1−13–√)+j0.5(1−13–√)
import numpy as np
x = np.array([.5 + .5/np.sqrt(3) + 1j*(.5 - .5/np.sqrt(3)),
.5 - .5/np.sqrt(3) + 1j*(.5 + .5/np.sqrt(3)),
0])
xf = np.fft.fft(x)
assert np.allclose(xf[2], 0)
证明
我们寻求以 N / 2 自由度编码N 2位信息有无数这样的编码。对于偶数情况,我们寻求以自由度零点。我们知道一种解决方案是。通过唯一性(一对一),我们因此得出结论,它是唯一的解决方案。N/2−11N/2N/2N/2x=X=0
我推导出的解决方案,它概括了任何奇数:N=3N
x * exp(k) = X
(x.re + x.im) * (cos - i*sin)
(x.re*cos - x.re*i*sin) + (x.im*i*cos - x.im*i*i*sin) = X.re + X.im*i
x.re*cos + x.im*sin = X.re
x.im*cos - x.re*sin = X.im
cos(k=0) * x.re + sin(k=0) * x.im = X[0].re
cos(k=1) * x.re + sin(k=1) * x.im = X[1].re
cos(k=2) * x.re + sin(k=2) * x.im = X[2].re
-sin(k=0) * x.re + cos(k=0) * x.im = X[0].im
-sin(k=1) * x.re + cos(k=1) * x.im = X[1].im
-sin(k=2) * x.re + cos(k=2) * x.im = X[2].im
[1 1 1] * r + [0 0 0] * i = R0
[1 -.5 -.5] * r + [0 .87 -.87] * i = R1
[1 -.5 -.5] * r + [0 -.87 .87] * i = R2
[0 0 0] * r + [1 1 1] * i = I0
[0 -.87 .87] * r + [1 -.5 -.5] * i = I1
[0 .87 -.87] * r + [1 -.5 -.5] * i = I2
r2 = i2 = 0
-->
[1 1 0] * r + [0 0 0] * i = R0
[1 -.5 0] * r + [0 .87 0] * i = R1
[1 -.5 0] * r + [0 -.87 0] * i = R2
[0 0 0] * r + [1 1 0] * i = I0
[0 -.87 0] * r + [1 -.5 0] * i = I1
[0 .87 0] * r + [1 -.5 0] * i = I2
r0 + r1 = R0;
r0 - .5*r1 + .87*i1 = R1;
r0 - .5*r1 - .87*i1 = R2;
i0 + i1 = I0;
-.87*r1 + i0 - .5*i1 = I1;
.87*r1 + i0 - .5*i1 = I2;
现在我们任意设置R0=I0=1
并将其提供给Wolfram Alpha,这给了我们(我设置g
为 的占位符sin(2pi/3)
):
对于一般情况:
1 -注意:它实际上是位信息( reals and imaginaries)和个自由度( re & im),这在示例中显示我们指定两个值 ( ) 以获得一个解决方案。N−1⌊N/2⌋N+1⌈N/2⌉R0, I0