I need to optimize my matlab code through vectorization

1 view (last 30 days)
I need to vectorize this loop in code.. can someone guide?
function X = IDWT2DCT(x,Dct_matrix,IW_matrix)
[K,MN]=size(x);
block_size = 8;
X = zeros(block_size,block_size,K);
temp = zeros(block_size,block_size);
y = (Dct_matrix'*x);
for k = 1:K
temp = reshape(y(k,:),block_size,block_size);
X(:,:,k) = IW_matrix*temp*IW_matrix';
end
*****Speed is not issue, i just need to vanish this loop****** [EDITED, Jan, Code formatted]
  6 Comments
Image Analyst
Image Analyst on 16 Apr 2015
I agree with Jan that the loop takes virtually no time, unless K is huge, and I'm talking billions. Looping a few hundred thousand or a few million times takes like a microsecond. What is the value of K? What are the dimensions of Y and x?
Abeera Tariq
Abeera Tariq on 17 Apr 2015
I need to implement the whole code on GPU, issue is that there are many loops inside loops .. so as an initiative i took inner most loop so that i can move to outer most loop..

Sign in to comment.

Answers (1)

Jan
Jan on 16 Apr 2015
I hesitate to invest any period of time when I cannot see any benefit. You ask for an "optimization", but the code will not be better in any way if it is vectorized. Therefore I'm convinced, that I cannot "optimize" it, especially when speed does not matter. If you want to have more complex for debugging and most likely faster as a side-effect, try these marvelous functions:
Please note, that "optimizing" code, which is not a bottleneck of a program is a known anti-pattern of programming. See http://en.wikipedia.org/wiki/Anti-pattern -> "premature optimization" and http://en.wikipedia.org/wiki/Optimization_(computer_science)#When_to_optimize
  2 Comments
Abeera Tariq
Abeera Tariq on 16 Apr 2015
I need to implement this on gpu nd there r many loops inside loops so i started removing these loops through vectorization.. :(
James Tursa
James Tursa on 16 Apr 2015
Edited: James Tursa on 16 Apr 2015
If you are implementing this on a GPU then why not work with a BLAS library to do the matrix multiplies? E.g.,
https://developer.nvidia.com/cublas

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!