transform方法产生NullPointerException:
FastFourierTransformer transformer = new FastFourierTransformer(null);
try {
Complex[] complx = transformer.transform(sineValue, null);
我怀疑问题是'null'参数,但我不明白文档对“DftNormalization”和“TransformType”需要什么。
例如,如果我输入单词STANDARD for DftNormalization或单词FORWARD for 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。
答案 0 :(得分: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);