Logspace.java

/*
 * $Id: Logspace.java,v 1.11 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.LogarithmicallySpacedVector;
import org.mklab.nfc.scalar.NumericalScalar;


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

  /**
   * <code>10^x1</code>と<code>10^x2</code>の間を対数的に <code>50</code>等分割した点をもつベクトルを返します。
   * 
   * <p> もし<code>x2</code>が<code>PI</code>なら <code>10^x2</code>と<code>PI</code>の間を対数的に 等分割した点を求めます。
   * 
   * @param x1 始点
   * @param x2 終点
   * @return 対数的に等間隔に分割されたデータ列 (logarithmically spaced array)
   */
  public static DoubleMatrix logspace(final double x1, final double x2) {
    return logspace(x1, x2, 50);
  }

  /**
   * <code>10^x1</code>と<code>10^x2</code>の間を対数的に <code>50</code>等分割した点をもつベクトルを返します。
   * 
   * <p> もし<code>x2</code>が<code>PI</code>なら <code>10^x2</code>と<code>PI</code>の間を対数的に 等分割した点を求めます。
   * 
   * @param <S> スカラーの型
   * @param <M> 行列の型
   * @param x1 始点
   * @param x2 終点
   * @return 対数的に等間隔に分割されたデータ列 (logarithmically spaced array)
   */
  public static <S extends NumericalScalar<S,M>, M extends NumericalMatrix<S,M>> M logspace(final S x1, final S x2) {
    return logspace(x1, x2, 50);
  }

  /**
   * <code>splitSize</code>分割した点を返します。
   * 
   * @param x1 始点
   * @param x2 終点
   * @param splitSize 分割数
   * @return 対数的に等間隔に分割されたデータ列 (logarithmically spaced array)
   */
  public static DoubleMatrix logspace(final double x1, final double x2, final int splitSize) {
    return LogarithmicallySpacedVector.create(x1, x2, splitSize);
  }

  /**
   * <code>splitSize</code>分割した点を返します。
   * @param <S> スカラーの型
   * @param <M> 行列の型
   * 
   * @param x1 始点
   * @param x2 終点
   * @param splitSize 分割数
   * @return 対数的に等間隔に分割されたデータ列 (logarithmically spaced array)
   */
  public static <S extends NumericalScalar<S,M>, M extends NumericalMatrix<S,M>> M logspace(final S x1, final S x2, final int splitSize) {
    return LogarithmicallySpacedVector.create(x1, x2, splitSize);
  }
}