- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
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
Link Copied
2 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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
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
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page