<p>你没有做相移。在</p>
<p>你所做的就是添加一个6000向量,比如说<em>p</em>,常数值<em>p(i)=j</em>π,即<em>V</em>的FFT。在</p>
<p>让我们写下<em>Ṽ=V+p</em>。在</p>
<p>由于FFT(和IFFT)的线性关系,你所说的<code>back_again</code>是</p>
<p><em></p>
<p>其中,当然,<em>p=IFFT(p)</em>是差异<code>values-back_again</code>-现在,让我们检查一下什么是<em>p</em>。。。在</p>
<pre><code>In [51]: P = np.pi*1j*np.ones(6000)
...: p = np.fft.ifft(P)
...: plt.plot(p.real*10**16, label='real(p)*10**16')
...: plt.plot(p.imag, label='imag(p)')
...: plt.legend();
</code></pre>
<p><a href="https://i.stack.imgur.com/ollK2.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/ollK2.png" alt="antitransform of P"/></a></p>
<p>如您所见,您修改了<code>values</code>,方法是在IFFT的计算中添加一个实分量<em>。在</p>
<p>常数的变换在<em>ω=0</em>处为尖峰,常数的反变换(频域)为<em>t=0</em>处的尖峰。在</p>
<p>正如我在一篇删除的评论中所说,如果你不把一个常数加到每个FFT项上,而是把它们乘以一个常数,你也会把信号乘以同一个常数(记住,FFT和IFFT是线性的)。在</p>
<p>要做你想做的,你必须记住,时域中的位移只是(周期性)信号与时移尖峰的(循环)卷积,所以你必须将信号的FFT乘以移位尖峰的FFT。在</p>
<p>因为Dirac分布的Fourier变换<em>δ(t-a)</em>是<em>exp(-iωa)</em>,所以必须将信号FFT的每个项乘以一个频率相关项。在</p>
<hr/>
<p>一个例子</p>
<p>一些准备工作</p>
^{pr2}$
<p>计算以<code>n</code>为中心的狄拉克分布在<code>N</code>上的离散FT的函数</p>
<pre><code>In [64]: def shift(n, N):
...: s = np.zeros(N)
...: s[n] = 1.0
...: return np.fft.fft(s)
</code></pre>
<p>让我们画一个信号和移位信号</p>
<pre><code>In [65]: t = np.arange(4096)*np.pi/1024
In [66]: v0 = np.sin(t)
In [67]: v1 = np.sin(t-np.pi/4)
In [68]: f, a = plot(t, v0)
In [69]: a.plot(t, v1, label='shifted by $\\pi/4$');
In [70]: a.legend();
</code></pre>
<p><a href="https://i.stack.imgur.com/PgMYM.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/PgMYM.png" alt="enter image description here"/></a></p>
<p>现在计算正确尖峰的FFT(注意<em>π/4=(4π)/16</em>),移位信号的FFT,s.s的FFT,最后绘制我们的结果</p>
<pre><code>In [71]: S = shift(4096//16-1, 4096)
In [72]: VS = np.fft.fft(v0)*S
In [73]: vs = np.fft.ifft(VS)
In [74]: f, ay = plot(t, v0)
In [75]: ay.plot(t, vs.real, label='shifted in frequency domain');
In [76]: ay.legend();
</code></pre>
<p><a href="https://i.stack.imgur.com/6iKTe.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/6iKTe.png" alt="enter image description here"/></a></p>