DFT求相位

两个相同频率的正弦函数,都是3kHz,相位差90度

采样可得出电压值,波谷值为0.8v,波峰值为2.5v

请教大家如何通过DFT得出他们的相位差?

作者: xmrforever   发布时间: 2011-06-16

1> 根据抽样定理,你的离散采样点需要是最高频的2倍,也就是至少6k/s,这样能够保留原有数据的信息。
2> 采样区间一定要是N个完整周期区间,例如两次波谷之间,或两次波峰之间,N越大,效果越好。傅里叶变化会将你的数据无限循环展开。
3> 对数据做DFT,得到一个一维复数数组。找出这个数组中模最大的两个值(如果噪声不是很大的话,那两个正弦函数应该是能量最大的载体),计算它们之间在复平面上的相位差。

作者: gogdizzy   发布时间: 2011-06-16

引用 1 楼 gogdizzy 的回复:
1> 根据抽样定理,你的离散采样点需要是最高频的2倍,也就是至少6k/s,这样能够保留原有数据的信息。
2> 采样区间一定要是N个完整周期区间,例如两次波谷之间,或两次波峰之间,N越大,效果越好。傅里叶变化会将你的数据无限循环展开。
3> 对数据做DFT,得到一个一维复数数组。找出这个数组中模最大的两个值(如果噪声不是很大的话,那两个正弦函数应该是能量最大的载体),计算它们之间在复平面上的相位……

感谢你专业的解答,可否给我个公式呢?

作者: xmrforever   发布时间: 2011-06-16

引用 2 楼 xmrforever 的回复:
感谢你专业的解答,可否给我个公式呢?


你是说DFT怎么计算吗?这个我还真没有现成的源代码。网上倒是有很多。但是都是研究用的。
追求效率的话还是用fftw库吧(cufft是CUDA计算的一部分,速度更快)。

作者: gogdizzy   发布时间: 2011-06-16

引用 3 楼 gogdizzy 的回复:
引用 2 楼 xmrforever 的回复:
感谢你专业的解答,可否给我个公式呢?


你是说DFT怎么计算吗?这个我还真没有现成的源代码。网上倒是有很多。但是都是研究用的。
追求效率的话还是用fftw库吧(cufft是CUDA计算的一部分,速度更快)。

上学的时候学过数字信号处理,但工作后一直没有用过,现在突然要用到,不知道从何下手了
我现在ADC已经做好了,电压值都能采样出来,就是不知道如何计算出相位差

作者: xmrforever   发布时间: 2011-06-16