Kronprod.java

/*
 * $Id: Kronprod.java,v 1.13 2008/03/03 15:18:35 koga Exp $
 * 
 * Copyright (C) 2004 Koga Laboratory. All rights reserved.
 */
package org.mklab.tool.matrix;

import org.mklab.nfc.matrix.DoubleMatrix;


/**
 * クロネッカー積を計算するクラスです。
 * 
 * <p> Kronecker product
 * 
 * @author koga
 * @version $Revision: 1.13 $
 * @see org.mklab.tool.matrix.Kronsum
 */
public class Kronprod {

  /**
   * <code>A</code>と<code>B</code>のクロネッカー積を計算します。 計算結果は、<code>A</code>の全ての成分と<code>B</code>の 積から構成されます。
   * 
   * @param a データ1
   * @param b データ2
   * @return クロネッカー積 (kronecker product)
   */
  public static DoubleMatrix kronprod(DoubleMatrix a, DoubleMatrix b) {
    final int rowSize = a.getRowSize();
    final int columnSize = a.getColumnSize();

    final DoubleMatrix ans = a.createZero(rowSize, columnSize, b);
    for (int row = 1; row <= rowSize; row++) {
      for (int column = 1; column <= columnSize; column++) {
        ans.setSubMatrix(row, column, b, b.multiply(a.getElement(row, column)));
      }
    }

    return ans;
  }

}