我想在频域中改变正弦波
我的想法是:
代码:
t=np.arange(0, 6 , 0.001)
values = A*np.sin(t)
ft_values= np.fft.fft(values)
ft_values_phase=ft_values+1j*np.pi
back_again= np.fft.ifft(ft_values_phase)
plt.subplot(211)
plt.plot(t,values)
plt.subplot(212)
plt.plot(t,back_again)
我期望有两张图像,其中一个波被π移位,但是我得到了这个结果
(无相移):
谢谢你的帮助!在
你没有做相移。在
你所做的就是添加一个6000向量,比如说p,常数值p(i)=jπ,即V的FFT。在
让我们写下Ṽ=V+p。在
由于FFT(和IFFT)的线性关系,你所说的
back_again
是其中,当然,p=IFFT(p)是差异
values-back_again
-现在,让我们检查一下什么是p。。。在如您所见,您修改了
values
,方法是在IFFT的计算中添加一个实分量。在常数的变换在ω=0处为尖峰,常数的反变换(频域)为t=0处的尖峰。在
正如我在一篇删除的评论中所说,如果你不把一个常数加到每个FFT项上,而是把它们乘以一个常数,你也会把信号乘以同一个常数(记住,FFT和IFFT是线性的)。在
要做你想做的,你必须记住,时域中的位移只是(周期性)信号与时移尖峰的(循环)卷积,所以你必须将信号的FFT乘以移位尖峰的FFT。在
因为Dirac分布的Fourier变换δ(t-a)是exp(-iωa),所以必须将信号FFT的每个项乘以一个频率相关项。在
一个例子
一些准备工作
^{pr2}$计算以
n
为中心的狄拉克分布在N
上的离散FT的函数让我们画一个信号和移位信号
现在计算正确尖峰的FFT(注意π/4=(4π)/16),移位信号的FFT,s.s的FFT,最后绘制我们的结果
很好,帮了大忙! 对于任何想做同样事情的人,下面是一个python文件:
相关问题 更多 >
编程相关推荐