Vchop.java

/*
 * $Id: Vchop.java,v 1.7 2008/02/25 08:35:52 koga Exp $
 * 
 * Copyright (C) 2004 Koga Laboratory. All rights reserved.
 */
package org.mklab.tool.matrix;

import java.util.ArrayList;
import java.util.List;

import org.mklab.nfc.matrix.DoubleMatrix;
import org.mklab.nfc.matrix.IntMatrix;


/**
 * 長いベクトルを複数のベクトルに分割するクラスです。
 * 
 * <p>Chop a vector to some vectors
 * 
 * @author koga
 * @version $Revision: 1.7 $
 * @see org.mklab.tool.matrix.Vconnect
 */
public class Vchop {

  /**
   * 与えられた指数に応じて、長い状態ベクトルをいくつかの 状態に分割します。
   * 
   * <p> Chop a long state vector to some states vectors according to the given list of index.
   * 
   * @param X ベクトル
   * @param statesIndex 各ベクトルの大きさのリスト
   * @return 分割したベクトルのリスト (choped vectors)
   */
  public static List<DoubleMatrix> vchop(DoubleMatrix X, List<IntMatrix> statesIndex) {
    int n = statesIndex.size();
    List<DoubleMatrix> states = new ArrayList<>(n);

    for (int i = 1; i <= n; i++) {
      states.set(i, X.getSubVector(statesIndex.get(i + 1)));
    }

    return states;
  }

}