Intel® Integrated Performance Primitives
Community support and discussions relating to developing high-performance vision, signal, security, and storage applications.
Announcements
This community is designed for sharing of public information. Please do not share Intel or third-party confidential information here.
6628 Discussions

## Wiener filter

Beginner
148 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
148 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
148 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,
Vladimir