Tfn2zp.java
/*
* $Id: Tfn2zp.java,v 1.11 2008/03/25 01:12:40 koga Exp $
*
* Copyright (C) 2004 Koga Laboratory. All rights reserved.
*/
package org.mklab.tool.control;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.mklab.nfc.matrix.DoubleComplexMatrix;
import org.mklab.nfc.matrix.DoubleMatrix;
import org.mklab.nfc.scalar.DoubleRationalPolynomial;
/**
* 伝達関数(有理多項式)から極とゼロ点の集合に変換するクラスです。
*
* <p>Transfer function to zero-pole conversion
*
* @author koga
* @version $Revision: 1.11 $
* @see org.mklab.tool.control.Tfn2tf
* @see org.mklab.tool.control.Tfn2tfm
* @see org.mklab.tool.control.Tfn2ss
* @see org.mklab.tool.control.Zp2tfn
*/
public class Tfn2zp {
/**
* 伝達関数が
*
* <pre><code> (s-z1)(s-z2)...(s-zn) g(s) = k --------------------- (s-p1)(s-p2)...(s-pn) </code></pre>
*
* であるシステムのゼロ点<code>z</code>、極<code>p</code>、ゲイン<code>k</code>を求めます。
*
* @param g 伝達関数
* @return {z, po, k} (ゼロ点, 極, ゲイン) (zero-pole representation)
*/
public static List<DoubleComplexMatrix> tfn2zp(DoubleRationalPolynomial g) {
List<DoubleMatrix> tmp = Tfn2tf.tfn2tf(g);
DoubleMatrix NUM = tmp.get(0);
DoubleMatrix denominator = tmp.get(1);
List<DoubleComplexMatrix> tmp2 = Tf2zp.tf2zp(NUM, denominator);
DoubleComplexMatrix z = tmp2.get(0);
DoubleComplexMatrix p = tmp2.get(1);
DoubleComplexMatrix k = tmp2.get(2);
//return new MatxList(new Object[] {z, p, k});
return new ArrayList<>(Arrays.asList(new DoubleComplexMatrix[] {z, p, k}));
}
}