Tfm2zp.java

/*
 * $Id: Tfm2zp.java,v 1.11 2008/03/24 14:57:16 koga Exp $
 *
 * Copyright (C) 2004 Koga Laboratory. All rights reserved.
 */
package org.mklab.tool.control;

import java.util.List;

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


/**
 * 伝達関数行列(有理多項式行列)から極とゼロ点の集合に変換するクラスです。
 * 
 * <p>Transfer function matrix to zero-pole conversion
 * 
 * @author koga
 * @version $Revision: 1.11 $
 * @see org.mklab.tool.control.Tfm2tf
 * @see org.mklab.tool.control.Tfm2tfn
 * @see org.mklab.tool.control.Tfm2ss
 * @see org.mklab.tool.control.Zp2tfm
 */
public class Tfm2zp {

  /**
   * @param G 伝達関数行列
   * @return {z, po, k} (ゼロ点, 極, ゲイン) (zero-pole representation)
   */
  public static List<DoubleComplexMatrix> tfm2zp(DoubleRationalPolynomialMatrix G) {
    int inputNumber = 1;
    return tfm2zp(G, inputNumber);
  }

  /**
   * 伝達関数行列が
   * 
   * <pre><code> (s-z1)(s-z2)...(s-zn) G(s) = k --------------------- (s-p1)(s-p2)...(s-pn) </code></pre>
   * 
   * であるシステムの<code>i</code>番目の入力から出力までのシステムの ゼロ点<code>z</code>、極<code>p</code>、ゲイン<code>k</code>を求めます。
   * 
   * @param G 伝達関数行列
   * @param inputNumber 入力番号
   * @return {z, po, k} (ゼロ点, 極, ゲイン) (zero-pole representation)
   */
  public static List<DoubleComplexMatrix> tfm2zp(DoubleRationalPolynomialMatrix G, int inputNumber) {
    List<DoubleMatrix> tmp = Tfm2tf.tfm2tf(G, inputNumber);
    DoubleMatrix NUM = tmp.get(0);
    DoubleMatrix denominator = tmp.get(1);
    return Tf2zp.tf2zp(NUM, denominator);
  }

}