www.pudn.com > MeasStatDepend.rar > MeasStatDepend.m


function [I2XY,I2MaxXY] = MeasStatDepend(X,Y) 
% Measure Statistical Dependence 统计依赖测量 
% 两个时间序列间统计依赖性测量 
% 参考文献:时间序列间统计依赖性测量的一种改进方法(王海燕 李 文① 陈文彦) 
 if length(X)~=length(Y) 
    error('两个向量长度必须相等!'); 
 end; 
 Z(1,:) = X; 
 Z(2,:) = Y; 
N = length(X); 
delta = (mean(X)+mean(Y))/10; 
w=N*(N-1); 
C2XY = 0; 
C2X = 0; 
C2Y = 0; 
K2XY = 0; 
HX = 0; 
HY = 0; 
HK = 0; 
for i = 1:N 
    for j = 1:N 
        if i~=j 
           d1 = Z(:,i); 
           d2 = Z(:,j); 
           C2XY = C2XY + heaviside(delta-distance1(d1,d2)); 
           d1 = X(:,i); 
           d2 = X(:,j); 
           HX = heaviside(delta-distance1(d1,d2)); 
           C2X = C2X + HX; 
           d1 = Y(:,i); 
           d2 = Y(:,j); 
           HY = heaviside(delta-distance1(d1,d2)); 
           C2Y = C2Y + HY; 
           K2XY = K2XY + (HX*HY); 
        end; 
        for k = 1:N 
            if i~=k 
               d1 = Y(:,i); 
               d2 = Y(:,k); 
               HK = heaviside(delta-distance1(d1,d2)); 
               K2XY = K2XY + (HX*HK); 
            end; 
        end; 
    end; 
end; 
C2XY = C2XY/w; 
C2X = C2X/w; 
C2Y = C2Y/w; 
K2XY = K2XY/(N*(N-1)^2); 
 
I2XY = LOG2(C2XY/(C2X*C2Y)+2*(1-K2XY/(C2X*C2Y))); 
I2MaxXY = min([log2(1/C2X) log2(1/C2Y)]);  
  
function result = heaviside(arg1) 
 % Hevaside函数 
 if arg1 < 0  
   result = 0; 
 else 
   result = 1; 
end; 
 
function dist = distance1(X,Y) 
 % 欧拉距离计算 
 if length(X)~=length(Y) 
    error('两个向量长度必须相等!'); 
 end; 
 dist = sqrt(sum((X-Y).^2));