mirror of
https://github.com/TheAlgorithms/Java.git
synced 2025-07-28 06:55:02 +08:00
@ -43,14 +43,13 @@ public class ConvolutionFFT {
|
||||
* @return The convolved signal.
|
||||
*/
|
||||
public static ArrayList<FFT.Complex> convolutionFFT(
|
||||
ArrayList<FFT.Complex> a,
|
||||
ArrayList<FFT.Complex> b
|
||||
) {
|
||||
ArrayList<FFT.Complex> a, ArrayList<FFT.Complex> b) {
|
||||
int convolvedSize = a.size() + b.size() - 1; // The size of the convolved signal
|
||||
padding(a, convolvedSize); // Zero padding both signals
|
||||
padding(b, convolvedSize);
|
||||
|
||||
/* Find the FFTs of both signals (Note that the size of the FFTs will be bigger than the convolvedSize because of the extra zero padding in FFT algorithm) */
|
||||
/* Find the FFTs of both signals (Note that the size of the FFTs will be bigger than the
|
||||
* convolvedSize because of the extra zero padding in FFT algorithm) */
|
||||
FFT.fft(a, false);
|
||||
FFT.fft(b, false);
|
||||
ArrayList<FFT.Complex> convolved = new ArrayList<>();
|
||||
@ -59,7 +58,9 @@ public class ConvolutionFFT {
|
||||
convolved.add(a.get(i).multiply(b.get(i))); // FFT(a)*FFT(b)
|
||||
}
|
||||
FFT.fft(convolved, true); // IFFT
|
||||
convolved.subList(convolvedSize, convolved.size()).clear(); // Remove the remaining zeros after the convolvedSize. These extra zeros came from
|
||||
convolved.subList(convolvedSize, convolved.size())
|
||||
.clear(); // Remove the remaining zeros after the convolvedSize. These extra zeros came
|
||||
// from
|
||||
// paddingPowerOfTwo() method inside the fft() method.
|
||||
|
||||
return convolved;
|
||||
|
Reference in New Issue
Block a user