计算信号的相位谱

时间:2019-03-25 20:30:00

标签: java fft dft

使用JTransform或JWave的输出,应如何计算相位谱?

我是否只是编写了类似的方法,但是我使用以下方法计算相位: @Override public void computeSpectrum() { // The spectrum into which we store the data super.spectrum = new double[signal.getSampledAmplitudes().length >> 1]; // Compute the magnitude spectrum of the signal double re = 0, im = 0; for (int bin = 0; bin < spectrum.length - 1; ++bin) { re = super.frequencyDomain[2 * bin]; im = super.frequencyDomain[2 * bin + 1]; super.spectrum[bin] = Math.sqrt(re * re + im * im); } }

我使用以下方法来计算幅度谱:

$ luarocks install luatz

1 个答案:

答案 0 :(得分:0)

实际上,您可以使用弧度计算弧度的相位谱,该弧度与幅度谱使用的环类似:

double re = 0, im = 0;
for (int bin = 0; bin < spectrum.length - 1; ++bin) {
   re = super.frequencyDomain[2 * bin];
   im = super.frequencyDomain[2 * bin + 1];
   super.spectrum[bin] = Math.atan2(im, re);

}

如果您喜欢以度为单位的结果,只需使用toDegrees()

转换相位即可。
...
   super.spectrum[bin] = Math.toDegrees(Math.atan2(im, re));