需要对FFT类的参数进行解释



变换方法生成一个 NullPointerException:

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

我怀疑问题是"空"参数,但我不明白文档对"DftNormalization"和"TransformType"的要求是什么。

例如,如果我输入单词 STANDARD 表示 DftNormalization,或者输入单词 FORWARD 表示 TransformType,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。

传递第二个参数时,您需要在值前面加上类型名称:

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);

最新更新