java - 需要FFT类参数的解释

标签 java nullpointerexception fft

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。

最佳答案

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

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

关于java - 需要FFT类参数的解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19428848/

相关文章:

matlab - 如何找到周期性声音信号的频率?

java - ArrayList add(index, object) 与 add(object) 复杂性

java - 底部片材回收器 View 支架

java - 在 GUI 中的表中添加一行

java - SXSSFWorkbook 上的 AutosizeColumns

java.lang.RuntimeException : Unable to start activity ComponentInfo java. lang.nullpointerException新手代码

matlab - Matlab频谱图给出虚数

java - 我们应该在哪里使用 commit(session),在 try 还是 finally 中?

java - 如何将二维字符数组写入文件

python - NumPy 中傅里叶相移造成的图像翻译中的伪影