Intel® Integrated Performance Primitives
Deliberate problems developing high-performance vision, signal, security, and storage applications.
6699 Discussions

## Wiener filter

Beginner
222 Views
Hi,

I am using the IPPS library.

I want to compute a wiener filter without having to conjpack/conjperm the data from the fourier transform. I see that there are functions for computing the multplication of two vector in the perm/pack formats but I need to do a division as well. Anyone who has done this or have an idea on how it can be implemented?

Say I have X and Y from the FFT and I want to compute

H = X/Y. X/Y

which is equal to

H = X*conj(Y)/|Y|2

X*conj(Y) can be computed using the functions provided.
The divisor is c2+d2 if Y = c+i*d, so using the standard mul functions c^2 and d^2 can be computed quite easily. But do be able to divide the packed/permed vector X*conj(Y) by c^2+d^2, I have to sum element 0 and 1, 2 and 3 and so on and put the sum of 0 and 1 into place 0 and 1 and the sum of 2 and 3 into place 2 and 3 and so on. Then I can use the normal div function to do the division.

Am I correct in my thinking here? Anyone who knows a simple way of doing this without having to run a for loop.

Thanks,
Thor Andreas
2 Replies
Beginner
222 Views
Hi,

I think I found the answer to my question:

As long as I am in the CCS format I can just cast the Ipp32f pointer I have to a Ipp32fc pointer and use the standard functions and when I want to do the IFFT i just cast back to Ipp32f. Would this work?

Is there a speed difference between the formats for FFT?

Thanks,
Thor Andreas
Employee
222 Views
Hello,

you can compare performance of different IPP functions with IPP performance system available in IPP install package, please take a look at IPPtoolsperfsys folder

Regards,