Freqs.java
/*
* $Id: Freqs.java,v 1.12 2008/03/15 00:23:44 koga Exp $
*
* Copyright (C) 2004 Koga Laboratory. All rights reserved.
*/
package org.mklab.tool.signal;
import org.mklab.nfc.matrix.DoubleComplexMatrix;
import org.mklab.nfc.matrix.DoubleMatrix;
import org.mklab.nfc.scalar.DoubleComplexNumber;
import org.mklab.nfc.scalar.DoubleComplexPolynomial;
/**
* アナログ(連続時間)フィルタの周波数応答を求めるクラスです。
*
* <p> Analog filter frequency response
*
* @author koga
* @version $Revision: 1.12 $
* @see org.mklab.tool.signal.Freqz
*/
public class Freqs {
/**
* 周波数<code>w</code>におけるアナログフィルタ <code>b(s)/a(s)</code> <pre><code> nb-1 nb-2 b(s) b(1)s + b(2)s + ... + b(nb) G(s) = ---- = -------------------------------- na-1 na-2 a(s) a(1)s + a(2)s + ... +
* a(na) </code></pre>
*
* の周波数応答<code>Gjw</code>を返します。
*
* @param b 伝達関数の分子多項式の係数
* @param a 伝達関数の分母多項式の係数
* @param w 評価する周波数の列
* @return 周波数応答 (frequency response)
*/
public static DoubleComplexMatrix freqs(DoubleMatrix b, DoubleMatrix a, DoubleMatrix w) {
DoubleComplexNumber j = new DoubleComplexNumber(0,1);
DoubleComplexMatrix jw = new DoubleComplexMatrix(w).multiply(j);
DoubleComplexMatrix Gjw = new DoubleComplexPolynomial(b).evaluate(jw).divideElementWise(new DoubleComplexPolynomial(a).evaluate(jw));
return Gjw;
}
}