java - 如何使用DFT来逼近函数?

标签 java fft dft

我正在尝试实现类似 here 的内容和 here ,具体来说,我希望能够执行以下操作,如下图所示:

enter image description here

也就是说,给定 N 个具有恒定时间间隔的离散点,我想创建一个收敛到这些点的函数,如图所示......

到目前为止我所做的是:

  1. 导入 jtransform
  2. 用过

    private double[] doDFT(double[] data, int start, int end) {
        DoubleFFT_1D doubleFFT_1D = new DoubleFFT_1D(end-start);
        double[] array = new double[(end-start)*2];
        for (int i=0;i<end-start;i++) {
            array[i] = data[i+start];
            array[i+1] = data[i+start+1]; 
        }
        doubleFFT_1D.complexForward(array);
        return array;
    }
    

现在我陷入困境,如何使用输出数组来生成收敛到原始数据数组中的点的函数?

只是为了明确我想要的内容:例如,在图像中,输入到 doDFT 的数据数组是蓝线图,我想要的是生成一个函数 f ,其图像是红线图。

最佳答案

您可能希望将复数输入的虚部设置为零,而不是下一个点。

您想要的函数是正弦曲线。每个正弦波的频率为 FFT 结果箱索引 * Fs/N。每个正弦曲线的幅度和相位将由与其 FFT 结果箱对应的复数值给出。

您可以从 1 开始对越来越多的正弦曲线求和,以获得收敛波形。

关于java - 如何使用DFT来逼近函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24442744/

相关文章:

matlab - 通过MATLAB中的fft进行卷积定理

c++ - MATLAB 中的 fft2 与 OpenCV C++ 中的 dft 速度比较

java - Android 上的 Integer.parseInt 和 NumberFormatException

java - 所选目录不是 JDK 的有效主目录 - Windows 上的 IntelliJ JavaFX JDK

ios - 如何播放和读取 .caf PCM 音频文件

java - 正弦样本的离散傅立叶频谱分析的意外结果

signal-processing - STFT/FFT 工作流程顺序

java - NetBeans Java - 如何将外部库 (jar) 添加到 git 存储库

java - 对称 AES 加密和解密在任何 Java 版本上返回相同的值并支持 Java 6,且无需使用任何外部库

matlab - 为什么在执行离散傅里叶逆变换时将指数视为连续变量不起作用?