Java 傅立叶变换
时间: 2023-09-25 21:12:20 浏览: 33
Java 中可以使用 FFT(快速傅里叶变换)算法实现傅里叶变换。以下是一个简单的示例代码:
```
import edu.emory.mathcs.jtransforms.fft.DoubleFFT_1D;
public class FourierTransform {
public static void main(String[] args) {
double[] signal = {1, 2, 3, 4, 5, 6, 7, 8};
DoubleFFT_1D fft = new DoubleFFT_1D(signal.length);
fft.realForward(signal);
// 输出频率和幅度
for (int i = 0; i < signal.length / 2; i++) {
double re = signal[2*i];
double im = signal[2*i+1];
double freq = i;
double mag = Math.sqrt(re*re + im*im);
System.out.println(freq + " Hz: " + mag);
}
}
}
```
在这个示例中,我们使用 JTransforms 库中的 `DoubleFFT_1D` 类来执行快速傅里叶变换。我们首先定义一个输入信号 `signal`,并创建一个 `DoubleFFT_1D` 对象。然后,我们使用 `realForward()` 方法计算傅里叶变换,并将结果存储回 `signal` 数组中。
最后,我们迭代输出每个频率分量的幅度和频率。注意,我们只需要输出前一半频率分量,因为傅里叶变换的结果是对称的。
需要注意的是,这只是一个简单的示例代码,实际应用中可能需要更多的处理和优化。