yifeng2030
发表于 2007-5-29 08:03
多谢,不知能否留下联系方式,方便向您请教,MSN或邮箱?
zhwang554
发表于 2007-5-29 18:05
忙了一天,sorry!
zhwang@tju.edu.cn
QQ 804111486
你提到用二个正弦波自相关,互相关求相位, 均是线性相关.
求相位还是FFT最好,它一次FFT可以求许多频率成分的相位, 相关法只能求单一频率,噪声下因有相除也不好.
yifeng2030
发表于 2007-5-29 21:36
呵呵,我已经请求加您的QQ了,您不会是天津大学王兆华老师吧?
robustcococole
发表于 2009-12-15 19:46
受教了。。。
wwllzz
发表于 2011-4-3 21:39
记得有个帖子曾在讨论哪个领域需要将相位/频率计算到如此精度, 我是在做数字电能计量的, 要实现交流功率表的在线校准, 这里就要求电网频率在现场噪声条件下算到10ppm以内, 希望apFFT能有所帮助, 我刚接触这概念和思路
wwllzz
发表于 2011-4-5 16:25
实际应用中的信号是包含大量谐波的, 加窗可能是必要的选择. 窗函数的选择, 系数确定的依据, 加窗的时机和方式, 甚至窗函数的表达式似乎都是工程方法, 没有明确的理论依据. 稍后我传上来我的测试数据
wwllzz
发表于 2011-4-8 15:54
我在关注这贴, 很可能是我的窗加的不对, 再仔细琢磨下双窗apFFT的算法. 目的是在稳定信号下, 不同时刻能得到稳定结果.
ximeiji
发表于 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=;
pha=;
A=;
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)+;%构成长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();xlim();grid
subplot(5,2,2),stem(2*a2,'.');title('(b)apFFT振幅谱');ylim();xlim();grid
subplot(5,2,3);stem(p1,'.');title('(c)FFT 相位谱');ylim();xlim();grid
subplot(5,2,4),stem(p2,'.');title('(d)apFFT 相位谱');ylim();xlim();grid
subplot(5,2,5);stem(ee,'.');title('(e)校正频偏');ylim();xlim();grid
subplot(5,2,6);stem(aa,'.');title('(f)校正振幅1');ylim();xlim();grid
subplot(5,2,7);stem(a11,'.');title('(g)归一振幅谱');ylim();xlim();grid
subplot(5,2,8);stem(aa2,'.');title('(h)校正振幅2');ylim();xlim();grid
subplot(5,2,9);stem(a12,'.');title('(i)归一功率谱');ylim();xlim();grid
subplot(5,2,10);stem(aa3,'.');title('(j)校正振幅3');ylim();xlim();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
程序改动的地方编的有点烂,还望老师不吝赐教,谢谢!
ximeiji
发表于 2011-7-22 14:51
还有我加了您的QQ号,但是您还没回应我的。。。。
liuxingwja
发表于 2012-8-2 18:16
受教了学习啦太专业了
xjzhendong
发表于 2012-11-29 18:15
王博士 杨老师 你们在2007年就开始讨论这个问题了,我现在才开始学习这个问题,嗯 受教了
blueseasky
发表于 2013-1-27 15:08
xjzhendong 发表于 2012-11-29 18:15 static/image/common/back.gif
王博士 杨老师 你们在2007年就开始讨论这个问题了,我现在才开始学习这个问题,嗯 受教了
我也刚接触这方面的知识,希望多交流,共同学习~~
十年木林森
发表于 2013-10-6 21:50
zhwang554 发表于 2007-5-26 11:18 static/image/common/back.gif
很高兴和你交流,
95224388是什么?
王老师,您好,我买了您写的《数字信号全相位谱分析与滤波技术》这本书,按照书上的程序,自己写了一个基于LabVIEW的测单频正弦波的初相的仿真程序,但结果不对啊,不知道您对LabVIEW编程语言熟悉不?当频率是频率分辨率的整数倍时,初相大致可以测准,但相位估计精度也不是很高啊;当频率不是频率分辨率的整数倍的时候,初相完全就测不准了。不知道怎么传附件
jinyi7016
发表于 2014-10-24 17:15
我的程序也存在跳变,估计是硬件的问题