Tfm2tf.java

/*
 * $Id: Tfm2tf.java,v 1.11 2008/03/24 23:45:43 koga Exp $
 *
 * Copyright (C) 2004 Koga Laboratory. All rights reserved.
 */
package org.mklab.tool.control;

import java.util.List;

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


/**
 * 伝達関数行列(有理多項式行列)から伝達関数(係数からなる行列)に変換するクラスです。
 * 
 * <p>Transfer function matrix to transfer function conversion
 * 
 * @author koga
 * @version $Revision: 1.11 $
 * @see org.mklab.tool.control.Tfm2ss
 * @see org.mklab.tool.control.Tfm2zp
 * @see org.mklab.tool.control.Tfm2tfn
 * @see org.mklab.tool.control.Tf2tfm
 */
public class Tfm2tf {

  /**
   * @param G 伝達関数行列
   * @return 伝達関数 (transfer function)
   */
  public static List<DoubleMatrix> tfm2tf(DoubleRationalPolynomialMatrix G) {
    int inputNumber = 1;
    return tfm2tf(G, inputNumber);
  }

  /**
   * 伝達関数行列が
   * 
   * <pre><code> NUM(s) G(s) = -------- den(s) </code></pre>
   * 
   * であるシステムの<code>i</code>番目の入力から出力までのシステムの 伝達関数の分子行列多項式の係数行列<code>NUM</code>と分母多項式の係数 <code>den</code>を求めます。
   * 
   * @param G 伝達関数行列
   * @param inputNumber 入力番号
   * @return 伝達関数 (transfer function)
   */
  public static List<DoubleMatrix> tfm2tf(DoubleRationalPolynomialMatrix G, int inputNumber) {
    List<DoubleMatrix> tmp = Tfm2ss.tfm2ss(G, inputNumber);
    DoubleMatrix A = tmp.get(0);
    DoubleMatrix B = tmp.get(1);
    DoubleMatrix C = tmp.get(2);
    DoubleMatrix D = tmp.get(3);
    return Ss2tf.ss2tf(A, B, C, D, inputNumber);
  }

}