title: How to generate all pairs from two vectors in MATLAB using vectorised code?
body: <p>More than once now I have needed to generate all possible pairs of two vectors in MATLAB which I do with for loops which take up a fair few lines of code i.e.</p>
  
  <pre><code>vec1 = 1:4;
  vec2 = 1:3;
  i = 0;
  pairs = zeros([4*3 2]);
  for val1 = vec1
      for val2 = vec2
           i = i + 1;
           pairs(i,1) = val1;
           pairs(i,2) = val2;
      end
  end
  </code></pre>
  
  <p>Generates ...</p>
  
  <pre><code>1 1
  1 2
  1 3
  2 1
  2 2
  2 3
  3 1
  3 2
  3 3
  4 1 
  4 2
  4 3
  </code></pre>
  
  <p>There must be a better way to do this which is more MATLAB'esque?</p>
  
  <p>n.b. <code>nchoosek</code> does not do the reversed pairs which is what I need (i.e. <code>2 1</code> as well as <code>1 2</code>), I can't just reverse and append the <code>nchoosek</code> output because the symmetric pairs will be included twice. </p>