【问题标题】:JTransforms FFT DC component different from MatlabJTransforms 与 Matlab 不同的 FFT DC 分量
【发布时间】:2013-07-30 00:05:56
【问题描述】:

我尝试对长度为 4000 的输入信号进行 FFT。我的 java 代码如下:

    Vector<Double> signal = readFile("signal.txt");
    double[] input = new double[signal.size()];
    for(int i=0; i<signal.size(); i++) {
        input[i] = signal.get(i);
    }

    DoubleFFT_1D fftDo = new DoubleFFT_1D(input.length);    
    double[] fft = new double[input.length * 2];
    System.arraycopy(input, 0, fft, 0, input.length);
    fftDo.realForwardFull(fft);

    for(int i=0; i<6; i=i+2) {
        System.out.println(fft[i] + "\t" + fft[i+1]);
    }

输出与 Matlab 的 FFT 中给出的答案相匹配,但第一个分量除外。

有人知道这是什么原因吗?

【问题讨论】:

    标签: java matlab fft


    【解决方案1】:

    一些纯实数 FFT 仅返回高达 N/2 个 bin 的频率数据,因为其余部分只是前半部分的镜像复共轭,用于严格实数输入。但由于一半的能量在后半部分,因此需要将结果加倍以考虑未返回的 N/2 个能量箱。第零个 (DC) 不需要加倍,因为它在负 DC 处没有复共轭仓,因此必须在某处进行不同的处理。检查您的 FFT 文档,因为您可能需要在仅实数半长结果 FFT 之外处理此问题。

    【讨论】:

      猜你喜欢
      • 2017-11-09
      • 2013-01-25
      • 2022-01-07
      • 2017-11-10
      • 1970-01-01
      • 2017-09-28
      • 2020-07-19
      • 2015-11-16
      • 1970-01-01
      相关资源
      最近更新 更多