Linspace.java

/*
 * $Id: Linspace.java,v 1.10 2008/03/15 00:23:40 koga Exp $
 * 
 * Copyright (C) 2004 Koga Laboratory. All rights reserved.
 */
package org.mklab.tool.matrix;

import org.mklab.nfc.matrix.DoubleMatrix;
import org.mklab.nfc.matrix.NumericalMatrix;
import org.mklab.nfc.matrix.misc.LinearlySpacedVector;
import org.mklab.nfc.scalar.NumericalScalar;


/**
 * 等間隔で分割されたデータ列を求めるクラスです。
 * 
 * <p> Linearly spaced array
 * 
 * @author koga
 * @version $Revision: 1.10 $
 * @see org.mklab.tool.matrix.Logspace
 */
public class Linspace {

  /**
   * <code>x1</code>と<code>x2</code>の間を<code>100</code> 等分した点を成分にもつベクトルを返します。
   * 
   * @param x1 始点
   * @param x2 終点
   * @return 等間隔で分割されたデータ列 (linearly spaced array)
   */
  public static DoubleMatrix linspace(double x1, double x2) {
    return linspace(x1, x2, 100);
  }

  /**
   * <code>x1</code>と<code>x2</code>の間を<code>100</code> 等分した点を成分にもつベクトルを返します。
   * @param <S> スカラーの型
   * @param <M> 行列の型
   * 
   * @param x1 始点
   * @param x2 終点
   * @return 等間隔で分割されたデータ列 (linearly spaced array)
   */
  public static <S extends NumericalScalar<S,M>, M extends NumericalMatrix<S,M>> M  linspace(S x1, S x2) {
    return linspace(x1, x2, 100);
  }

  /**
   * <code>x1</code>と<code>x2</code>の間を <code>n</code>等分した点を成分にもつベクトルを返します。
   * 
   * @param x1 始点
   * @param x2 終点
   * @param splitSize 分割数
   * @return 等間隔で分割されたデータ列 (linearly spaced array)
   */
  public static DoubleMatrix linspace(double x1, double x2, int splitSize) {
    return LinearlySpacedVector.create(x1, x2, splitSize);
  }

  /**
   * <code>x1</code>と<code>x2</code>の間を <code>n</code>等分した点を成分にもつベクトルを返します。
   * @param <S> スカラーの型
   * @param <M> 行列の型
   * 
   * @param x1 始点
   * @param x2 終点
   * @param splitSize 分割数
   * @return 等間隔で分割されたデータ列 (linearly spaced array)
   */
  public static <S extends NumericalScalar<S,M>, M extends NumericalMatrix<S,M>> M linspace(S x1, S  x2, int splitSize) {
    return LinearlySpacedVector.create(x1, x2, splitSize);
  }
}