fork download
  1. w = 40;
  2. h = 50;
  3. n = 1000;
  4. ch = rand( [h,w,n] );
  5. mask = rand( [h,w] ) < .95;
  6.  
  7. disp('Shai')
  8. tic;
  9. r = reshape( ch, [], size(ch,3) );
  10. Mean_res = mean( r(mask(:),: ), 2 );
  11. toc
  12.  
  13. disp('Divakar 1')
  14. tic;
  15. Mean_bsxfun = sum(reshape(bsxfun(@times,ch,mask),[],size(ch,3)),1)./sum(mask(:));
  16. toc
  17. disp('Divakar 2')
  18. tic;
  19. Mean_matmult = mask(:).'*reshape(ch,[],size(ch,3))./sum(mask(:));
  20. toc
Success #stdin #stdout 1.05s 65144KB
stdin
Standard input is empty
stdout
Shai
Elapsed time is 0.0237629 seconds.
Divakar 1
Elapsed time is 0.721699 seconds.
Divakar 2
Elapsed time is 0.0035369 seconds.