声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 4161|回复: 9

[FFT] 关于全相位FFT方法的请教

[复制链接]
发表于 2012-3-19 10:58 | 显示全部楼层 |阅读模式

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

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

x
本人现在在做一个频谱分析,是把采样数据进行FFT,提取其中工频50Hz信号的幅值相位,在网上看到有全相位FFT算法,也按此方法试验了一下,但是并没有得到想要的结果,相位准确,总是与真是相位有相差,有相差也无所谓了,全当是参考选的不同,但是精度却不高,更重要的是振幅的校正,校正结果精度也不高,把程序贴这,各位帮我看看,哪还需要改进~~
N=1024;
fs=50000;
f0=50;
A1=220;
pha=30;
t=(0:2*N-2);
y=A1*cos(2*pi*f0/fs*t+pha/180*pi);

y2 = y(1:2*N-1);
win =hanning(N)';
winn =conv(win,win);%apFFT须要卷积窗
win2 = winn/sum(winn);
y22= y2.*win2;
y222=y22(N:end)+[0 y22(1:N-1)];%构成长N的apFFT输入数据
y2_fft = fft(y222,N);
a2 = abs(y2_fft);
p2=phase(y2_fft)/pi*180;

r=round(f0*N/fs);
dk=f0*N/fs-r;
xiangwei=p2(r+1)-11.993;
zhenfu=2*pi*a2(r+1)*dk*(1-dk*dk)/sin(dk*180*pi/180);

disp('2N-1个数')
disp('校正后幅值')
zhenfu
disp('相位')
xiangwei
回复
分享到:

使用道具 举报

发表于 2012-3-19 20:28 | 显示全部楼层
本帖最后由 zhwang554 于 2012-3-19 20:36 编辑

回复 1 # fnj1023 的帖子

xiangwei=p2(r+1)-8.28 %mod((N-1)*2*pi*f0*180/pi/fs,360)=8.28
zhenfu=(2*pi*dk*(1-dk*dk)/sin(dk*pi))^2*a2(r+1)/2 %apfft插值公式是平方关系
 楼主| 发表于 2012-3-19 20:58 | 显示全部楼层
回复 2 # zhwang554 的帖子

王老师您好,可能是我之前看的文章公式有问题,按您说的这样改了之后幅值精度确实比原来的高了些,但是还是不能够满足我们的要求,误差要小于千分之一,看您的那个视频,相位和振幅精度都特别高,e-6,还是e-7呢,这是为什么呢,还有个很疑惑的问题就是,不是说全相位FFT不论是整周期采样还是非整周期采样,相位都是准确的吗,怎么我的程序老会有偏差呢,还是说全相位的精度比较高,另外就是那个精度的问题,谢谢您上面的解答,也希望您能继续为我们解答应用过程中遇到的问题,非常感谢~~
 楼主| 发表于 2012-3-19 21:37 | 显示全部楼层
回复 3 # fnj1023 的帖子

王老师,我谈谈从我看资料开始这段时间来对全相位FFT的认识,或者说是对频谱分析的认识,您看我理解的是否有偏差,因为身边没有人搞这个也没有可以互相交流探讨的人,希望您可以给以指导
传统的FFT在分析整周期采样问题时,没有问题,幅值除以N/2即得到信号幅值,而相位也基本准确,而对于非整周期采样问题,则由于截断再周期扩展时会有突变,或者说是由于加窗(一般的截取为加矩形窗),使信号频谱泄露,幅值相位就会产生偏差,这些偏差可通过频谱较正的方法得以减小,比如能量重心法,比值法等。然后全相位的提出是基于其相位测量准确的优点,使得校正精度可进一步提高,相位甚至无需校正,然后基于全相位又提出了几种校正方法,我试了一下传统FFT与全相位FFT结合的方法,和现在遇到的问题相同,只是偏差值比直接进行全相位小一些,但仍存在偏差,不知是什么原因,然后看到很多文章都在说全相位时移相位差校正法相比其他方法看似是最好的一种校正方法,相位不需校正,而频率校正看不明白是用的什么方法,希望您可以给些指导,稍微讲解一下或者给些资料参考一下,我们现在是希望可以从所采的信号中准确提取出工频50Hz信号的幅值和相位,而且精度要求比较高,我现在不明白这个精度是和方法有关系吗,就是说像上边那样直接进行全相位还是进行校正是否可以达到我们要求的精度,还是需要用另外一种方法比如全相位时移相位差法进行校正才能达到较高的精度呢,不知道我说的是否明白,希望王老师能够为学生解答疑惑~~谢谢您了先~~
发表于 2012-3-20 00:20 | 显示全部楼层
回复 3 # fnj1023 的帖子

参考振动论坛zhwang554日志
<apfft谱分析中的振幅校正精度>
http://forum.vibunion.com/home-s ... -blog-id-17986.html
发表于 2012-3-20 01:22 | 显示全部楼层
本帖最后由 zhwang554 于 2012-3-20 04:35 编辑

回复3 # 4 # fnj1023 的帖子

你画出a2振幅谱图可见,在fs=50000,N=1024时,f0=50Hz的峰值在1(即r=round(f0*N/fs)=1),所以它的镜像频率在-1, 镜像频率的泄漏严重影响相位和振幅测量精度,fs太高了,峰值太靠近0轴了. 下面为不同fs的xiangwei值

fs=50000; xiangwei=29.99918933751590
fs=5000,   xiangwei=30.00000003035851
fs=1000,     xiangwei=29.99999999999966

当fs=1000, xiangwei=29.99999999999966,精度很高

 楼主| 发表于 2012-3-21 15:25 | 显示全部楼层
回复 6 # zhwang554 的帖子

谢谢王老师指导,学生受益匪浅,感谢感谢~~
发表于 2012-10-12 15:32 | 显示全部楼层

不是采样率越高,分辨率越高吗?那准确率也应该更高啊?
发表于 2013-1-31 21:41 | 显示全部楼层
李清志 发表于 2012-10-12 15:32
不是采样率越高,分辨率越高吗?那准确率也应该更高啊?

乱说!!
FSX=fs/N, 显然还和采样点数有关系的。
发表于 2019-12-7 20:45 | 显示全部楼层
我想请问一下各位大佬,为什么我用y5=angle(y4)*180/pi语句求相位时,发现仿真数据的效果很好,然而实际数据的效果很乱不理想,滤波以后还是这样,能请教一下是什么原因吗?
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-17 07:25 , Processed in 0.080647 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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