我正在尝试实施类似于here和here的内容,具体来说,我希望能够执行以下操作,如下图所示:
也就是说,给定具有恒定时间间隔的N个离散点,我想创建一个收敛到这些点的函数,如图像中所示......
到目前为止,我所做的是:
使用它
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,它的图像是红线图。
答案 0 :(得分:2)
您可能希望将复数输入的虚数组件设置为零,而不是下一点。
你想要的功能是正弦曲线。每个正弦波将具有FFT结果仓索引* Fs / N的频率。每个正弦波的幅度和相位将由与其FFT结果仓对应的复数值给出。
您可以从1开始对越来越多的这些正弦曲线求和,以获得收敛波形。