Xcov.java
/*
* $Id: Xcov.java,v 1.9 2008/03/08 00:17:40 koga Exp $
*
* Copyright (C) 2004 Koga Laboratory. All rights reserved.
*/
package org.mklab.tool.signal;
import org.mklab.nfc.matrix.DoubleMatrix;
/**
* 分散を求めるクラスです。
*
* <p>Cross-covariance function
*
* @author koga
* @version $Revision: 1.9 $
* @see org.mklab.tool.signal.Xcorr
* @see org.mklab.tool.matrix.Cov
*/
public class Xcov {
/**
* もし<code>x</code>がベクトルなら、自己分散を返します。
*
* <p> もし<code>x</code>が<code>m</code>×<code>n</code>の行列なら、 <code>x</code>の全ての成分の組み合わせの共分散を含む行列を返します。
*
* @param x データ
* @return 自己分散 (cross-covariance)
*/
public static DoubleMatrix xcov(DoubleMatrix x) {
DoubleMatrix ox = x.createOnes(x.getRowSize(), 1);
DoubleMatrix c = Xcorr.xcorr(x.subtract(ox.multiply(x.transpose().meanRowWise())));
return c;
}
/**
* ベクトル<code>x</code>と<code>y</code>とのcross-covarianceを返します。
*
* @param x データ1
* @param y データ2
* @return 共分散 (cross-covariance)
*/
public static DoubleMatrix xcov(DoubleMatrix x, DoubleMatrix y) {
DoubleMatrix ox = x.createOnes(x.getRowSize(), 1);
DoubleMatrix oy = y.createOnes(y.getRowSize(), 1);
DoubleMatrix c = Xcorr.xcorr(x.subtract(ox.multiply(x.transpose().meanRowWise())), y.subtract(oy.multiply(y.transpose().meanRowWise())));
return c;
}
}