搜索
bottom↓
回复: 15

关于全相位FFT(apFFT)算法的预处理问题

[复制链接]
(288585857)

出0入0汤圆

发表于 2011-8-1 22:29:07 | 显示全部楼层 |阅读模式
这两天在搞FFT,因为直接FFT后出来的数据直接进行取模后会有波动(初始相位不相同),所以查了挺多的资料,打算用apFFT来做,
用apFFT来做的时候有个问题,就是在数据预处理的时候,因为我想给数据加hanning窗。但是在实际中不会用C来写。

所以想请教下各位。我等间隔采64个点(也就是过了个矩形窗),怎么给它+Hanning窗啊。用C语言怎么来写

再一个论文上有看到这样一句话:先把两个Hanning窗进行卷积运算得到卷积窗Wc,然后用Wc对长度为2N-1的数据向量进行数据加权。。
这句话如何用C语言来写啊~~~~~

广告:购买下面产品论坛可获得建设资金 >>

(288585662)

出0入0汤圆

 楼主| 发表于 2011-8-1 22:32:22 | 显示全部楼层
顺便求在PUDN上面有帐号的大牛帮我下载一个东西,
http://www.pudn.com/downloads128/sourcecode/comm/detail543776.html
我邮箱是4738877@163.com。先谢谢好心的大牛了
(288581488)

出0入0汤圆

发表于 2011-8-1 23:41:56 | 显示全部楼层
"直接FFT后出来的数据直接进行取模后会有波动" 取模,即计算幅值,应该不会有波动。和相位没关系。

hanning就是系数的乘法和加法吧。
(288554717)

出0入0汤圆

 楼主| 发表于 2011-8-2 07:08:07 | 显示全部楼层
回复【2楼】fickle
"直接fft后出来的数据直接进行取模后会有波动" 取模,即计算幅值,应该不会有波动。和相位没关系。
hanning就是系数的乘法和加法吧。
-----------------------------------------------------------------------

会有波动的,因为在实际中,信号不会是固定的频率。
你可以自己测试下:
y=2043+A*(PI2*I*50/FS+NS*PI2/12),NS去不同的值,计算出来的A是不对的

我的测试内容间帖子http://www.ourdev.cn/bbs/bbs_content.jsp?bbs_sn=4926281&bbs_page_no=1&search_mode=3&search_text=dwlovework&bbs_id=9999
(288551622)

出0入0汤圆

发表于 2011-8-2 07:59:42 | 显示全部楼层
呵呵,我的表达方式有问题。

“直接FFT后出来的数据直接进行取模后会有波动(初始相位不相同)” -采样的初始相位的不同,不是造成幅值的波动的原因。

这个 y=2043+A*(PI2*I*50/FS+NS*PI2/12) 是什么,没看明白?
(288549677)

出0入0汤圆

发表于 2011-8-2 08:32:07 | 显示全部楼层
你说的这个波动是非整周期采样造成的,也就是所谓的频谱泄露
其原理是:FTT实际上是对信号进行周期拓展,非整周期采样时,两个波形之间不是平滑过渡,会有一次跳变,引入了高频分量
加窗的原理是:尽量减小跳变
(288549334)

出0入0汤圆

发表于 2011-8-2 08:37:50 | 显示全部楼层
卷积就是做乘法啦!用MATLAB生产窗函数,再跟你采样数据做乘法
APFFT的最重要特性是相位不变性,即相位不需校正就可以得到任意点的相位,但他的幅值及频率校正是通过插值校正算法的到得,注意APFFT在频偏量为0.5时频率校正量是会出现1个频率分辨率误差
如果你的信号为单频信号建议你是用三点或者五点插值校正算法精度比APFFT要高,APFFT至少需要做二次FFT,采样点数也至少得2N-1点,如果你只关心基波信号,那么做DFT也是很快的!FFT校正算法我已经研究了几年了,我们的电力仪表都是靠这些算法测得准确的频率,幅值,相位差。。。
(288549197)

出0入0汤圆

发表于 2011-8-2 08:40:07 | 显示全部楼层
你要整周期等间隔采样那样频谱就不会泄露了!直接用FFT就可以算的很准,就是硬件加个锁相倍频
(288528304)

出0入0汤圆

 楼主| 发表于 2011-8-2 14:28:20 | 显示全部楼层
回复【6楼】again
卷积就是做乘法啦!用matlab生产窗函数,再跟你采样数据做乘法
apfft的最重要特性是相位不变性,即相位不需校正就可以得到任意点的相位,但他的幅值及频率校正是通过插值校正算法的到得,注意apfft在频偏量为0.5时频率校正量是会出现1个频率分辨率误差
如果你的信号为单频信号建议你是用三点或者五点插值校正算法精度比apfft要高,apfft至少需要做二次fft,采样点数也至少得2n-1点,如果你只关心基波信号,那么做dft也是很快的!fft校正算法我已经研究了几年了,我们的电力仪表都是靠这些算法测得准确的频率,幅值,相位差。。。
-----------------------------------------------------------------------

大牛,我就只不知道该怎么做三点或五点的差值校正算法啊。才想着要做apFFT的。
现在硬件电路已经固定了,没有锁相倍频。现在也就只能做校正了,
我对傅立叶的理解也很低。DFT没有标准的库啊,所以还真的没信心写出来
只有不到1个月的时间,我晕
(288527942)

出0入0汤圆

 楼主| 发表于 2011-8-2 14:34:22 | 显示全部楼层
回复【4楼】fickle
呵呵,我的表达方式有问题。
“直接fft后出来的数据直接进行取模后会有波动(初始相位不相同)” -采样的初始相位的不同,不是造成幅值的波动的原因。
这个 y=2043+a*(pi2*i*50/fs+ns*pi2/12) 是什么,没看明白?
-----------------------------------------------------------------------

会波动的y=2043+a*(pi2*i*50/fs+ns*pi2/12) 是什么,没看明白? 2043是直流分量,ns是去信号相位的,
动STM32的DSP库文件进行64点FFT前的取值函数如下:
void  dsp_asm_init(void)
{
  u16 i=0;
  float fx;
  u8 NS=2;//NS取值不同,那么代表采样点采样的初始位置不同,就会造成其余数据不变的情况下,只是因为采样点的初始位置不同,造成计算结果最大有20左右的波动,你可以实验下,NS=0~11(初始相位0~360)时数据会有不同,NS=12的结果和NS=0相同
  //生成N个采样点
  for(i=0;i<NPT;i++)
  {
    fx  =150* cos(PI2*i*50.0/Fs+NS*PI2/12);
    lBUFIN=((s16)fx)<<16;

}
       
}
(288527846)

出0入0汤圆

 楼主| 发表于 2011-8-2 14:35:58 | 显示全部楼层
回复【7楼】again
你要整周期等间隔采样那样频谱就不会泄露了!直接用fft就可以算的很准,就是硬件加个锁相倍频
-----------------------------------------------------------------------

整周期采样,我也想啊。这样就不用做校准了,但是现在硬件已经定了,就只能在软件上面处理了。头大啊~~~
(288526031)

出0入0汤圆

 楼主| 发表于 2011-8-2 15:06:13 | 显示全部楼层
回复【6楼】again
-----------------------------------------------------------------------
我相请问下 三点或者五点插值校正算法 是怎么实现的

我的理解是这样的,差值算法就是求取最大线附近的几条谱线来进行校正。
我采样频率是3200Hz,做64点的FFT,也就是说我的各个谱线之间的差值是50Hz。

因为是AD转换,FFT转换后的第一项是所提升的电压(负电压采集不到,所以得抬升电压我抬升的是1/2VCC)
第二项是50Hz的幅值,第三项是100Hz的幅值。。。。。。
这种情况下如何进行差值校准算法
(288507816)

出0入0汤圆

 楼主| 发表于 2011-8-2 20:09:48 | 显示全部楼层
定一下,大牛指点下
(284199636)

出0入0汤圆

发表于 2011-9-21 16:52:48 | 显示全部楼层
mark
(204450312)

出0入0汤圆

发表于 2014-4-1 17:28:12 | 显示全部楼层
mark mark mark
(11411678)

出0入0汤圆

发表于 2020-5-13 23:18:46 | 显示全部楼层
again 发表于 2011-8-2 08:37
卷积就是做乘法啦!用MATLAB生产窗函数,再跟你采样数据做乘法
APFFT的最重要特性是相位不变性,即相位不需 ...

膜拜大神。还希望大神能分享一些教程类的帖子。给我们科普一下。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子论坛 ( 公安交互式论坛备案:44190002001997 粤ICP备09047143号-1 )

GMT+8, 2020-9-23 01:13

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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