使用fft在Java中实现我自己的低通滤波器

时间:2011-06-01 20:27:18

标签: java fft

我正在使用:http://introcs.cs.princeton.edu/java/97data/FFT.java.html来实现我自己的低通滤波器。

如何重新排列FFT.fft()的输出,以便为正确的低通滤波器清零正确的值?

2 个答案:

答案 0 :(得分:3)

当给出N个样本的波形时,此FFT实现返回一个大小为N的数组,您必须将其视为两个连续的大小为N / 2的数组:

  • 第一个从索引0到索引N / 2-1,
  • 第二个从索引N / 2到数组末尾。

每个整数频率包含0到N / 2之间的复数能量(除了一个与另一个相反)。

因此,如果你想要使所有等于或高于频率F的信号静音,你必须将其归零:

  • 从F到N / 2-1的所有值,包括
  • 从N / 2-1 + F到N / 2-1的所有值。

然后你可以运行逆FFT来获得滤波后的信号。

答案 1 :(得分:1)

我想你会把从fft方法返回的y数组中的所有值归零,这些值的频率(由数组索引确定)高于你的截止值。