互相关函数图像的横坐标问题
以下是我编程的例子,主要求两个信号的相位差,按照某篇参考资料的说法,t_max对应的值就应该是它们的相位差,但是这个程序中做出的互相关函数的横坐标不是-40到+40,而是0到1200,请问这个横坐标表示的是什么意思呢?n=99;%设定每周期数据采集点数
T=6;%采样周期数
t=0:2*pi/(n-1):2*T*pi;%采样数
y1=4*sin(t);%信号1
y2=8*sin(t+pi/6);%信号2,相位差取pi/6
Cc=xcorr(y1,y2);%求互相关函数
=max(Cc)%找出Cc的最大值及对应的t_max
subplot(311); plot(t,y1); grid;
subplot(312); plot(t,y2); grid;
subplot(313); plot(Cc); grid;
[ 本帖最后由 ChaChing 于 2009-5-5 18:35 编辑 ] 楼主得到的互相关函数,其横坐标是样点数。因为Cc长为1177,绘图中便按1~1177排列。信号y1和y2分别长589,在计算互相关函数时从-588计算到588,共有1177个互相关系数,中心点是589。
计算出的t_max =597应和中心点求差值,算出差几个样点,再进一步求出相应的相位差。我把程序稍作修改为:
n=99; %设定每周期数据采集点数
T=6; %采样周期数
t=0:2*pi/(n-1):2*T*pi; %采样数
N=length(t);
fs=1/(n-1);
y1=4*sin(t); %信号1
y2=8*sin(t+pi/6); %信号2,相位差取pi/6
Cc=xcorr(y1,y2); %求互相关函数
=max(Cc) %找出Cc的最大值及对应的t_max
sample_delay=t_max-N; %计算与中心点相差的样点数
T_sig=(N-1)/6; %求信号一个周期的样点数,一个周期相对应于2*pi
delay1=pi/6 %pi/6的弧度
delay2=2*pi*sample_delay/T_sig %计算与中心点相差的样点数所对应的弧度值
这样计算出pi/6=0.5236,而从相关函数最大值处求出的相位差是0.5129。 :lol :handshake :victory: 哦,太谢谢你啦,很明白的解释!!!多谢指导!!!:victory:
斑竹快给他加分吧:@)
还有一个小问题,楼上知道为什么相关函数求得的最大的值所对应的时间差就是这两个信号的相位差呢?:loveliness:
[ 本帖最后由 ChaChing 于 2009-10-10 11:48 编辑 ] 对于单频信号而言,时移等于相移,相关系数从初始值变成最大值的时候,说明相位差也从初始相位差变为零。 我想问一下,如果信号是sin(a*t)和sin(a*(t+dt))如何得到dt,很多文献都说用相关函数法(互相关函数最大值对应的)得到时间差,可我也用上面的程序做了就是不对
我给的dt=6.7433e-005,而通过程序计算出的时间差为 3.2057e-009,好像与a的值有关。
[ 本帖最后由 ChaChing 于 2010-1-8 13:21 编辑 ] 楼上想求的也是相位差吧,我编了一个程序,可以利用互相关函数的算式编,求出来的结果相当精确哦,嘿嘿,介绍你看一篇文章,里面有方法哦:lol 《基于虚拟仪器的相位测量算法研究》----电测与仪表,白鹏等著!
回复 #6 jgh530520 的帖子
下不来、[ 本帖最后由 ChaChing 于 2010-6-11 13:09 编辑 ] 原帖由 qiuqia17 于 2007-11-1 13:16 发表 http://www.chinavib.com/forum/images/common/back.gif
下不来、
已经测试,没有问题 非常感谢 原帖由 songzy41 于 2007-3-29 18:30 发表
楼主得到的互相关函数,其横坐标是样点数。因为Cc长为1177,绘图中便按1~1177排列。信号y1和y2分别长589,在计算互相关函数时从-588计算到588,共有1177个互相关系数,中心点是589。
计算出的t_max =597应和中心点求 ...
N/6为什么是(N-1)/6? 原帖由 jgh530520 于 2007-6-19 19:38 发表
楼上想求的也是相位差吧,我编了一个程序,可以利用互相关函数的算式编,求出来的结果相当精确哦,嘿嘿,介绍你看一篇文章,里面有方法哦:lol 《基于虚拟仪器的相位测量算法研究》----电测与仪表,白鹏等著!
你的程序比较准确,但是如果相差2*pi的整数倍+最小相位差时,没法求出最小值
比如两点之间距离wx/v=相位差,sin(w(t-x/v)),并不能求出准确的距离,怎么办??
明白点了
多谢这么多高手,感觉自己得多学习呀 看着你们的帖子我是深有感触啊!我决定要好好把这门语言学好了啊!!:handshake回复 楼主 jgh530520 的帖子
谢谢大家的工作求助
老师布置了自相关函数的作业,自己编程实现任意函数的自相关,不得调用xcorr,我想用积分方式,但是不知如何处理公式中的 时间t和‘tao’两个变量。下面是我调用的xcorr实现的,不符合老师的要求。请各位高手帮帮忙!%***************2.正弦波***************%
%(1).时域波形
t=0:pi/500:4*pi;
N=length(t)-1;
y=sin(t);
subplot(211)
plot(t,y);
axis();
title('正弦时域波形图');
xlabel('t');
ylabel('y');
grid;
%(2).自相关分析
=xcorr(y,'unbiased');%求自相关函数
subplot(313)
plot(lags/N*4*pi,c);%作自相关波形
xlim();
xlabel('t');
ylabel('自相关函数值Rx(t)');
title('正弦波自相关分析');
grid;