频谱不能对准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:39 编辑
分辨率是3.90625,能得到50.78125Hz,已经很好了,要想精度再高,就提高FFT的点数就行了。
主要看CPU速度和FFT函数指令的优化效率 谢谢楼上回复
可是如果我想通过频谱分析电网信号的周期,那分辨率才3.90625。是不是太低了点。
有没有什么好办法,能把50Hz附近的频谱更精细的展现出来? 256Hz/256点? 重新软件抽样,就可以了吧 要想精度再高,采样就必须高..。
可以多次不同点FFT,求均值 你要分析的最低频率是多少呢,想在频谱体现出来,FFT的点数至少得包含几个周期的最低频率分量才行 本帖最后由 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附近可能出现两个尖峰,不一定能很方便提取信息! 如果只想看50Hz附近的比如45Hz到55Hz的频谱,没有必要把其他频率能量值计算出来。
这样牺牲频域宽度来获取频域精度,应该是可行的吧。就是要自己写FFT程序了。 貌似同行 都是高手呀
页:
[1]