title: MATLAB/Octave: cut a lot of circles from a image
body: <p>I have an matrix (image) and information about interesting part within circles
  (center corrdinates and radii given). I want to cut for all the circles the
  parts of the matrix in order to do some more calculations for each circle. Or at least I want to have a bitmask with all the circle.</p>
  
  <p>I use Octave (but could also use MATLAB but it would be difficult because of licence iusses) and have the following script with some hints from stackoverflow. I have information of 20 circles and it takes about 0.7 s on my Core i5 using Octave:</p>
  
  <pre><code>% image
  dim_x = 1000;
  dim_y = 1000;
  A=rand(dim_x,dim_y);
  
  % center positions and ...
  c = [222 111; 878 112; 81 718; 89 112; 222 111; 878 112; 81 718; 89 112; 222 111; 878 112; 81 718; 89 112; 222 111; 878 112; 81 718; 89 112; 222 111; 878 112; 81 718; 89 112];
  %...  radii of the circles
  r = [10 33 55 2 22 10 33 55 2 22 10 33 55 2 22 10 33 55 2 22];
  
  tic;
  for i=1:size(c,1)
      % create a bitmask ...
      mask = bsxfun(@plus, ((1:dim_y) - c(i,1)).^2, (transpose(1:dim_x) - c(i,2)).^2) &lt; r(i)^2;
      % ... cut the circles out of the image
      B=A.*mask;
  end;
  toc;
  </code></pre>
  
  <p>Do you know a more performant solution since I want to have about 600 circles.</p>
  
  <p>Thanks in advance</p>