电子乌托邦 发表于 2011-9-4 10:42

频谱不能对准50Hz

大家好!
我想分析一下电网谐波。
用了一个AD芯片,输出频率固定,即采样频率固定4000Hz,

1.如果我做256点FFT,分辨率做到4000Hz/256=15.625,离50Hz点最近的3*15.625 = 46.875Hz。结论:不能对准50Hz。

2.如果我做1024点FFT,分辨率做到4000Hz/1024=3.90625,离50Hz点最近的13*15.625 = 50.78125Hz。结论:不能对准50Hz。
我很想对准50Hz,这样计算出来的参数才够准确。但是采样频率(硬件ADC芯片)固定,FFT的点都是64,128,256,512,1024这种固定的点。

求问:有没有什么算法,(我只能从软件角度解决了,硬件定死了)能对准50Hz附近,50Hz附近分辨率越小越好?小弟没啥经验,不知道有这样的算法吗?

mybao 发表于 2011-9-5 09:30

本帖最后由 mybao 于 2011-9-5 09:39 编辑

分辨率是3.90625,能得到50.78125Hz,已经很好了,要想精度再高,就提高FFT的点数就行了。

主要看CPU速度和FFT函数指令的优化效率

电子乌托邦 发表于 2011-9-5 09:54

谢谢楼上回复

可是如果我想通过频谱分析电网信号的周期,那分辨率才3.90625。是不是太低了点。

有没有什么好办法,能把50Hz附近的频谱更精细的展现出来?

ddb_21ic 发表于 2011-9-5 10:23

256Hz/256点?

ddb_21ic 发表于 2011-9-5 10:25

重新软件抽样,就可以了吧

ccmc 发表于 2011-9-5 10:48

要想精度再高,采样就必须高..。

可以多次不同点FFT,求均值

mybao 发表于 2011-9-5 17:49

你要分析的最低频率是多少呢,想在频谱体现出来,FFT的点数至少得包含几个周期的最低频率分量才行

beyondlovelife 发表于 2011-12-15 21:57

本帖最后由 beyondlovelife 于 2011-12-16 20:54 编辑

lz可能对FFT的理解有一定的误区。
如果我做1024点FFT,分辨率做到4000Hz/1024=3.90625,离50Hz点最近的13*15.625=50.78125Hz。结论:不能对准50Hz。
FFT对准的也不是50.78125Hz,而是50.78125Hz~54.6875(50.78125Hz+3.90625)这个区间的能量。
同理,256点的FFT,也是46.875~62.5个区间;

50Hz附近分辨率越小越好?不一定。够用就好。如果太高(如1024*8)了在50hz附近出现很多峰值,反而不能有效提取信息。

结论:lz如果要求精度不高,256就行。个人认为512最好(46.875~54.6875)。做1024点的FFT精度相当高啦,在50Hz附近可能出现两个尖峰,不一定能很方便提取信息!

optical85 发表于 2011-12-21 17:50

如果只想看50Hz附近的比如45Hz到55Hz的频谱,没有必要把其他频率能量值计算出来。
这样牺牲频域宽度来获取频域精度,应该是可行的吧。就是要自己写FFT程序了。

dld2 发表于 2012-1-16 10:11

貌似同行

jack_shine 发表于 2012-2-7 13:31

都是高手呀
页: [1]
查看完整版本: 频谱不能对准50Hz