1 Reply Latest reply on Feb 27, 2013 2:55 PM by bragadeesh

    convolution of real data using clAmdFft




      I want to perform a convolution with the clAmdFft library (by the way: good work!). The input data and the convolution kernel are both real.

      The general procedure is:

      transform input A

      transform kernel B

      multiply the results componentwise

      transform back the product

      in words: A o B = iFT[FT[A] * FT[B]]


      I've implemented it with complex-to-complex (C2C) transformations only and it works fine. The resulting convolution is real data only. Because I have also other operations (kernels) dealing with the input data, I have to expand the buffer A from real to complex then convolve it and then reduce the results from complex to real. This looks somewhat unnecessary for me ...


      Here's the question: Do I have to perform a complex-to-complex FFT in the convolution algorithm? Or might it be sufficient to use real-to-complex (R2C) transformation for A and B, gaining hermitian data and then use complex-to-real (C2R) for inverse transforming the componentwise product? I.e.:

      A o B = iC2R_FT[R2C_FT[A] * R2C_FT[B]]