0

transform メソッドは NullPointerException を生成します。

FastFourierTransformer transformer = new FastFourierTransformer(null);
    try {
        Complex[] complx = transformer.transform(sineValue, null);

問題は「null」パラメーターにあると思われますが、「DftNormalization」および「TransformType」についてドキュメントで何が必要とされているかわかりません。

たとえば、DftNormalization に対して STANDARD という単語を入力したり、TransformType に対して FORWARD という単語を入力したりすると、Eclipse はエラーを表示します。ドキュメントを掘り下げても何の助けにもなりませんでした.FORWARDとSTANDARDという言葉をリストするだけです.

実数配列の標準正規化による順変換が必要です。

テスト配列を生成します。

sineValue = new double[4096];

    for (int i = 0; i < 4096; i++) {
        sineValue[i] = Math.sin(i * Math.PI * 2 / MIN_RATE) + 0.0
                * Math.sin(i * Math.PI * 4 / MIN_RATE) + 0.0
                * Math.sin(i * Math.PI * 15.3 / MIN_RATE);
        System.out.println("line " + i + "value: " + sineValue[i]);

MIN_RATE は 256 です。

4

1 に答える 1

2

2 番目の引数を渡すときは、値の前に型名を付ける必要があります。

FastFourierTransformer transformer = new FastFourierTransformer(null);
try {
    Complex[] complx = transformer.transform(sineValue, TransformType.FORWARD);

または、使用して静的インポートを実行できます。

import static org.apache.commons.math3.transform.TransformType.*;

次に、タイプ名を省略できます。

FastFourierTransformer transformer = new FastFourierTransformer(null);
try {
    Complex[] complx = transformer.transform(sineValue, FORWARD);

同じことがコンストラクター呼び出しにも当てはまります。

FastFourierTransformer transformer = new FastFourierTransformer(DftNormalization.STANDARD);
于 2013-10-17T14:52:42.563 に答える