声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 6628|回复: 19

[FFT] 问个数字信号处理问题。正弦波相位的求法

[复制链接]
发表于 2007-10-2 10:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
比如我这有一个正弦波。频率为2Hz,相位不知道。

这个正弦波我在一个周期内采样512个点。进行FFT。算出频谱。

怎样利用FFT后的数据得出初始相位呢?
回复
分享到:

使用道具 举报

发表于 2007-10-2 20:58 | 显示全部楼层
如果在FFT后2Hz与某条谱线相重合,则该谱线的相位角便是2Hz的初始相位;如果在FFT后2Hz不与某条谱线相重合,而是在2条谱线的中间,则要用校正方法去求。在本版的“信号处理专栏话题索引”中有一项是“频谱校正”,你可通过索引找到相关的帖子。
 楼主| 发表于 2007-10-2 21:16 | 显示全部楼层
哥们终于等到你了。我看了你很多帖子了。但还是有点不懂,等我写一下啊
 楼主| 发表于 2007-10-2 21:25 | 显示全部楼层

什么原因

求相位,就是用反正切
但在频谱中2Hz处即幅值最大处求出的相位与真实相位相差90度,这是什么原因呢。

我用VB写了一个FFT算法

比如离散正弦波sin(n×2×pi×2/1024)在频谱2Hz处,
,实部正数非常小,但是虚部是负数非常大。比如 51-4235i,这样相位是-90度,当然这是FFT计算的误差,

另外我又用matlab写了一段程序,也是计算上式的频谱

在2Hz处计算的结果是0 - 4226i

这样一来,2Hz初相就是-90度,初始相位应是0度啊

怎么和我初始的相位差了90度呢。~!

什么原因
发表于 2007-10-2 23:38 | 显示全部楼层
傅立叶变换是余弦分解,sin(n×2×pi×2/1024)=cos(n×2×pi×2/1024-pi/2)
所以你举的例子本身初相就是-90度而不是0
 楼主| 发表于 2007-10-2 23:52 | 显示全部楼层

遇到高人了

楼上解释好像是正确的。
但是有理论吗?

为什么是余弦分解呢?

另外sin(n×2×pi×2/1024)

是不是采样频率fs为1024Hz,而原始信号频率f1为2Hz呢
发表于 2007-10-3 00:07 | 显示全部楼层
从你这个式子里是看不出具体的频率的。
只能说如果你的1024是采样频率,n=0:N-1(N为点数)的话,那么你这个信号的频率就是2Hz.
发表于 2007-10-3 00:18 | 显示全部楼层
至于为什么是余弦分解,你可以这样看。
用欧拉公式:
cos(2*pi*f*t+ph)=(exp(j*ph)*exp(j*2*pi*f*t)+exp(j*-ph)*exp(j*-2*pi*f*t))/2;
sin(2*pi*f*t+ph)=(exp(j*ph)*exp(j*2*pi*f*t)-exp(j*-ph)*exp(j*-2*pi*f*t))/(2j)
                       =(exp(j*(ph-pi/2))*exp(j*2*pi*f*t)-exp(j*(-ph-pi/2))*exp(j*-2*pi*f*t))/2;

傅立叶变换是把信号分解成exp(j*2*pi*f*t)的和的形式,而且一般取正频率exp(j*2*pi*f*t)
显然按余弦信号的结果得到的相位是ph,而按正弦的结果是ph-pi/2,差了90度


说傅立叶变换是余弦分解当然是不严谨的说法,只是在分析实信号的时候通常都可以这样认为。

[ 本帖最后由 yangzj 于 2007-10-3 00:33 编辑 ]
 楼主| 发表于 2007-10-3 13:23 | 显示全部楼层
请问,有什么书,讲以上你说的内容吗?

是应该这样解释吗?
发表于 2007-10-3 14:32 | 显示全部楼层
自己的理解,仅供参考。:lol
 楼主| 发表于 2007-10-3 15:02 | 显示全部楼层
你在实际工作中算得的相位也是这样理解的吗?

或者你的老师怎么理解这个问题的。

我找了好多地方也没有能解释清楚这个问题的。

在实际计算相位时,只能用90度去修正它。
发表于 2007-10-3 15:14 | 显示全部楼层
我老师曾告诉我傅立叶变换的实质是余弦分解,傅立叶级数是正弦分解,所以它们俩的结果在相位上会相差90度。
但我觉得说傅立叶变换的实质是余弦分解并不那么确切,它实质还是复谐波的分解,即分解成exp(j*2*pi*f*t)的和的形式。
至于你的问题,这个式子足以说明问题了
sin(2*pi*f*t+ph)=(exp(j*ph)*exp(j*2*pi*f*t)-exp(j*-ph)*exp(j*-2*pi*f*t))/(2j)
                       =(exp(j*(ph-pi/2))*exp(j*2*pi*f*t)-exp(j*(-ph-pi/2))*exp(j*-2*pi*f*t))/2;

评分

1

查看全部评分

发表于 2007-10-3 17:07 | 显示全部楼层
大班主yangzj说得对的,我这里给出一个证明,看能否满足楼主的需要。
余弦和正弦的傅里叶变换.JPG

评分

1

查看全部评分

 楼主| 发表于 2007-10-3 20:21 | 显示全部楼层
楼上证明挺好。不过我有个问题:

只取正频率部分进行傅立叶变换:

下面的式子中间那一项,e的-j×2PI×n×k/N

看不太清楚,是不是上面的式子,

我想问的是这个式子哪来的?
发表于 2007-10-4 08:03 | 显示全部楼层
这是进行DFT变换。对于任何一个序列f(n),n=0,1,2,N-1,则f(n)的DFT定义为下式:
DFT.jpg
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-9 06:40 , Processed in 0.076756 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表