自相干函数和互相干函数盘算和作图的整顿1. 起首说说自相干和互相干的概念.--[转版友gghhjj]-------------------------------------------------------------------------------------这个是旌旗灯号剖析里的概念,他们分离暗示的是两个时光序列之间和统一个时光序列在随意率性两个不合时刻的取值之间的相干程度,即互相干函数是描写随机旌旗灯号 x(t),y(t)在随意率性两个不合时刻t1,t2的取值之间的相干程度,自相干函数是描写随机旌旗灯号x(t)在随意率性两个不合时刻t1,t2的取值之间的相干程度.------------------------------------------------------------------------------------------------------------------------------------------------[转版友hustyoung]-----------------------------------------------------------------------------------自相干函数是描写随机旌旗灯号X(t)在随意率性两个不合时刻t1,t2的取值之间的相干程度;互相干函数给出了在频域内两个旌旗灯号是否相干的一个断定指标,把两测点之间旌旗灯号的互谱与各自的自谱接洽了起来.它能用来肯定输出旌旗灯号有多大程度来自输入旌旗灯号,对修改测量中接入噪声源而产生的误差异常有效.----------------------------------------------------------------------------------------------------------------------------------------------事实上,在图象处理中,自相干和互相干函数的界说如下:设原函数是f(t),则自相干函数界说为R(u)=f(t)*f(-t),个中*暗示卷积;设两个函数分离是f(t)和g(t),则互相干函数界说为R(u)=f(t)*g(-t),它反应的是两个函数在不合的相对地位上互相匹配的程度.那么,如安在matlab中实现这两个相干并用图像显示出来呢?这个问题happy传授给出了完全答案:-----------[转happy传授]---------------------dt=.1;t=[0:dt:100];x=cos(t);[a,b]=xcorr(x,'unbiased');plot(b*dt,a)-----------------------------------------------------上面代码是求自相干函数并作图,对于互相干函数,稍微修改一下就可以了,即把[a,b]=xcorr(x,'unbiased');改为[a,b]=xcorr(x,y,'unbiased');即可.2. 实现进程:在Matalb中,求解xcorr的进程事实上是运用Fourier变换中的卷积定理进行的,即R(u)=ifft(fft(f)×fft(g)),个中 ×暗示乘法,注:此公式仅暗示情势盘算,并不是现实盘算所用的公式.当然也可以直接采取卷积进行盘算,但是成果会与xcorr的不合.事实上,两者既然有定理包管,那么成果必定是雷同的,只是没有效对公式罢了.下面是磨练两者成果雷同的代码:dt=.1;t=[0:dt:100];x=3*sin(t);y=cos(3*t);subplot(3,1,1);plot(t,x);subplot(3,1,2);plot(t,y);[a,b]=xcorr(x,y);subplot(3,1,3);plot(b*dt,a);yy=cos(3*fliplr(t)); % or use: yy=fliplr(y);z=conv(x,yy);pause;subplot(3,1,3);plot(b*dt,z,'r');即在xcorr中不运用scaling.3. 其他相干问题:1) 相干程度与相干函数的取值有什么接洽?-------------[转版友gghhjj]-------------------------------------------------------------------------------------相干系数只是一个比率,不是等单位量度,无什么单位名称,也不是相干的百分数,一般取小数点后两位来暗示.相干系数的正负号只暗示相干的偏向,绝对值暗示相干的程度.因为不是等单位的器量,因而不克不及说相干系数0.7是0.35两倍,只能说相干系数为0.7的二列变量相干程度比相干系数为0.35的二列变量相干程度更为亲密和更高.也不克不及说相干系数从0.70到0.80与相干系数从0.30到0.40增长的程度一样大.对于相干系数的大小所暗示的意义今朝在统计学界尚不一致,但平日按下是如许以为的:相干系数相干程度0.00-±0.30 微相干±0.30-±0.50 实相干±0.50-±0.80 明显相干±0.80-±1.00 高度相干----------------------------------------------------------------------------------------------------------------------------------------------2) 功率,能量,自相干函数的关系:---[转happy传授]-------------------------------------------------------------------------------------------拜见/jingpinke/xhst/final/XiTongJiaoCai/chap6/chap6_3/chap6_3_3.htm须要指出的是,相干和相干函数的概念本来是为描写随机进程的统计特点而引入的,称之为统计相干函数.按照随机进程的理论,要获得一个现实随机进程的统计相关函数是相当艰苦的,但对于知足各态历经性(遍历性)或广义安稳的随机进程,它们的统计相干函数等于其一个样本函数的时光相干函数.从肯定性旌旗灯号引出相干的概念,是为后续课程的进修打下一个基本.两旌旗灯号互相干函数的傅里叶变换等于个中第一个旌旗灯号变换与第二个旌旗灯号变换取共轭二者之乘积,这就是相干定理.对于自相干函数,它的傅里叶变换等于原旌旗灯号幅度谱的平方.周期余弦旌旗灯号和它的自相干函数具有雷同的角频率,即周期旌旗灯号的自相干函数仍然是同周期的周期旌旗灯号.在现实运用中,有些旌旗灯号无法求它的傅里叶变换,但是可以用求自相干函数的办法求得旌旗灯号的功率谱.--------------------------------------------------------------------------------------------------------------------------------------3) 与matlab中corrcoef函数的关系:以两个不合旌旗灯号(序列)为例,xcorr函数是经由过程不反折的卷积来权衡这两个旌旗灯号在不合地位的类似程度,假设两个序列的长度分离是m和n,则得到的是一个长度为2*max(m,n)-1的序列,也就是说,当m和n不相等的时刻,在履行xcorr的时刻会先对短的谁人序列进行0扩充,使得m 与n相等;而 corrcoef函数是经由过程协方差矩阵来权衡这两个旌旗灯号在不合局部的类似程度,盘算公式是:C(1,2)/SQRT(C(1,1)*C(2,2)),个中 C 暗示矩阵[f,g]的协方差矩阵,假设f和g都是列向量(这两个序列的长度必须一样才干介入运算),则得到的(我们感兴致的部分)是一个数.以默认的 A=corrcoef(f,g)为例,输出A是一个二维矩阵(对角元恒为1),我们感兴致的f和g的相干系数就存放在A(1,2)=A(2,1)上,其值在[-1,1]之间,1暗示最大的正相干(例如x=[1;2;3], y=[5;7;9]),-1暗示绝对值最大的负相干(例如x=[1;2;3], y=[12;7;2]).对于一般的矩阵X,履行A=corrcoef(X)后,A中每个值的地点行a和列b,反响的是原矩阵X中响应的第a个列向量和第 b个列向量的类似程度(即相干系数).4)互相干函数图像的横坐标问题以下是我编程的例子,主请求两个旌旗灯号的相位差,按照某篇参考材料的说法,t_max对应的值就应当是它们的相位差,但是这个程序中做出的互相干函数的横坐标不是-40到+40,而是0到1200,请问这个横坐标暗示的是什么意思呢?n=99;%设定每周期数据收集点数T=6;%采样周期数t=0:2*pi/(n-1):2*T*pi;%采样数y1=4*sin(t);%旌旗灯号1y2=8*sin(t+pi/6);%旌旗灯号2,相位差取pi/6Cc=xcorr(y1,y2);%求互相干函数[y_max,t_max]=max(Cc)%找出Cc的最大值及对应的t_maxsubplot(311); plot(t,y1); grid;subplot(312); plot(t,y2); grid;subplot(313); plot(Cc); grid;解答:楼主得到的互相干函数,其横坐标是样点数.因为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); %旌旗灯号1y2=8*sin(t+pi/6); %旌旗灯号2,相位差取pi/6Cc=xcorr(y1,y2); %求互相干函数[y_max,t_max]=max(Cc) %找出Cc的最大值及对应的t_maxsample_delay=t_max-N; %盘算与中间点相差的样点数T_sig=(N-1)/6; %求旌旗灯号一个周期的样点数,一个周期相对应于2*pidelay1=pi/6 %pi/6的弧度delay2=2*pi*sample_delay/T_sig %盘算与中间点相差的样点数所对应的弧度值如许盘算出pi/6=0.5236,而从相干函数最大值处求出的相位差是0.5129.对于单频旌旗灯号而言,时移等于相移,相干系数从初始值变成最大值的时刻,解释相位差也从初始相位差变成零。