声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

123
返回列表 发新帖
楼主: w89986581

[FFT] 如何准确确定信号中强线谱的相位?

[复制链接]
发表于 2007-5-29 08:03 | 显示全部楼层
多谢,不知能否留下联系方式,方便向您请教,MSN或邮箱?
回复 支持 反对
分享到:

使用道具 举报

发表于 2007-5-29 18:05 | 显示全部楼层
忙了一天,sorry!
zhwang@tju.edu.cn
QQ 804111486  

你提到用二个正弦波自相关,互相关求相位, 均是线性相关.
求相位还是FFT最好,它一次FFT可以求许多频率成分的相位, 相关法只能求单一频率,噪声下因有相除也不好.
发表于 2007-5-29 21:36 | 显示全部楼层
呵呵,我已经请求加您的QQ了,您不会是天津大学王兆华老师吧?
发表于 2009-12-15 19:46 | 显示全部楼层
受教了。。。
发表于 2011-4-3 21:39 | 显示全部楼层
记得有个帖子曾在讨论哪个领域需要将相位/频率计算到如此精度, 我是在做数字电能计量的, 要实现交流功率表的在线校准, 这里就要求电网频率在现场噪声条件下算到10ppm以内, 希望apFFT能有所帮助, 我刚接触这概念和思路
发表于 2011-4-5 16:25 | 显示全部楼层
实际应用中的信号是包含大量谐波的, 加窗可能是必要的选择. 窗函数的选择, 系数确定的依据, 加窗的时机和方式, 甚至窗函数的表达式似乎都是工程方法, 没有明确的理论依据. 稍后我传上来我的测试数据
发表于 2011-4-8 15:54 | 显示全部楼层
我在关注这贴, 很可能是我的窗加的不对, 再仔细琢磨下双窗apFFT的算法. 目的是在稳定信号下, 不同时刻能得到稳定结果.
发表于 2011-7-22 14:50 | 显示全部楼层
王老师您好!我在http://home.vibunion.com/blog-62061-17741.html
这里看到您的图1,我想把程序写出来,但是有两个问题:
1、(h)和(j)两个子图我画不出来,不知道怎么编写那个插值公式?
2、我本只想一次性显示3个点的频率、相位幅值,但是我的程序确实一次1个点,一次2个点,一次3个点这样显示,其实我想要的是最后一种,怎么避免前两种的出现呢?
下面是我的程序;
close all;clc;clear all;
N=128;
t=-N+1:N-1;
f=[9.5 29.3 49.1];
pha=[200 200 200];
A=[1.0  0.6  0.2];
y=1.0*cos(2*pi*t*9.5/N+200*pi/180)+0.6*cos(2*pi*t*29.3/N+200*pi/180)+0.2*cos(2*pi*t*49.1/N+200*pi/180);
y1 = y(N:2*N-1);%后N个输入数据
win =  hanning(N)';;
win1 = win/sum(win);%窗归1
y11= y1.*win1;
y11_fft = fft(y11,N);
a1 = abs(y11_fft);%FFT振幅谱
p1 = mod(phase(y11_fft)*180/pi,360);%FFT相位谱
y2 = y(1:2*N-1);%2N-1个输入数据
%win =  hanning(N)';;
winn =  conv(win,win);%apFFT须要卷积窗
win2 = winn/sum(winn);%窗归1
y22= y2.*win2;
y222=y22(N:end)+[0 y22(1:N-1)];%构成长N的apFFT输入数据
y2_fft = fft(y222,N);;
a2 = abs(y2_fft);%apFFT振幅谱
p2= mod(phase(y2_fft)*180/pi,360);%apFFT相位谱
      ee=mod((p1-p2)/180/(1-1/N),1);%频率偏离校正值
      aa=(a1.^2)./a2*2;%振幅校正值
a11=a2./a1;
a12=a11.^2;
for i=1:3
aa2=(A(i)/N).*(sin(pi*ee)/sin(pi*ee/N)).*exp(pha(i)+N/(N-1)*pi*ee);
aa3=(A(i)/N^2).*(sin(pi*ee)/sin(pi*ee/N)).^2.*exp(pha(i));
end
subplot(5,2,1);stem(2*a1,'.');title('(a)FFT振幅谱');ylim([0,1]);xlim([0 N/2]);grid
subplot(5,2,2),stem(2*a2,'.');title('(b)apFFT振幅谱');ylim([0,1]);xlim([0 N/2]);grid
subplot(5,2,3);stem(p1,'.');title('(c)FFT 相位谱');ylim([0,400]);xlim([0 N/2]);grid
subplot(5,2,4),stem(p2,'.');title('(d)apFFT 相位谱');ylim([0,400]);xlim([0 N/2]);grid
subplot(5,2,5);stem(ee,'.');title('(e)校正频偏');ylim([0,1]);xlim([0 N/2]);grid
subplot(5,2,6);stem(aa,'.');title('(f)校正振幅1');ylim([0,1]);xlim([0 N/2]);grid
subplot(5,2,7);stem(a11,'.');title('(g)归一振幅谱');ylim([0,1]);xlim([0 N/2]);grid
subplot(5,2,8);stem(aa2,'.');title('(h)校正振幅2');ylim([0,1]);xlim([0 N/2]);grid
subplot(5,2,9);stem(a12,'.');title('(i)归一功率谱');ylim([0,1]);xlim([0 N/2]);grid
subplot(5,2,10);stem(aa3,'.');title('(j)校正振幅3');ylim([0,1]);xlim([0 N/2]);grid
for i=1:3
r(i)=round(f(i));
disp('频率校正值')
      fff(i)=floor(f(i))+ee(r(i)+1)
disp('振幅校正值')
      aaa(i)=aa(r(i)+1)
disp('初相位校正值')
      ppp(i)=p2(r(i)+1)
    end
程序改动的地方编的有点烂,还望老师不吝赐教,谢谢!
发表于 2011-7-22 14:51 | 显示全部楼层
还有我加了您的QQ号,但是您还没回应我的。。。。
发表于 2012-8-2 18:16 | 显示全部楼层
受教了  学习啦  太专业了
发表于 2012-11-29 18:15 | 显示全部楼层
王博士 杨老师 你们在2007年就开始讨论这个问题了,我现在才开始学习这个问题,嗯 受教了
发表于 2013-1-27 15:08 | 显示全部楼层

我也刚接触这方面的知识,希望多交流,共同学习~~
发表于 2013-10-6 21:50 | 显示全部楼层
zhwang554 发表于 2007-5-26 11:18
很高兴和你交流,
95224388是什么?

王老师,您好,我买了您写的《数字信号全相位谱分析与滤波技术》这本书,按照书上的程序,自己写了一个基于LabVIEW的测单频正弦波的初相的仿真程序,但结果不对啊,不知道您对LabVIEW编程语言熟悉不?当频率是频率分辨率的整数倍时,初相大致可以测准,但相位估计精度也不是很高啊;当频率不是频率分辨率的整数倍的时候,初相完全就测不准了。不知道怎么传附件
发表于 2014-10-24 17:15 | 显示全部楼层
我的程序也存在跳变,估计是硬件的问题
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-5-20 06:29 , Processed in 0.234415 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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