title: How to create noise for a 2D Gaussian?
body: <p>I'm trying to practice curve fitting on a 2D Gaussian, but in order to do that I need to add random noise to my predefined Gaussian. My first instinct was to cycle through two for loops and create two matrices X and Y with random numbers, but when I tried that (I don't have the code anymore) Matlab wouldn't let me plot the Gaussian because I didn't generate my X and Y values using the meshgrid function. Since I seem to need to use meshgrid, can anyone help me figure out how to generate a random meshgrid so I can add some noise to my Gaussian?</p>
  
  <pre><code>amp = 1;
  x0 = 0;
  y0 = 0;
  sigmaX = 1;
  sigmaY = 1;
  %X = 1:1:100;
  %Y = 1:1:100;
  [X,Y] = meshgrid(-3:.1:3);
  %Z = X .* exp(-X.^2 - Y.^2);
  Z = amp*exp(-((X-x0).^2/(2*sigmaX^2)+(Y-y0).^2/(2*sigmaY^2)));
  surf(X, Y, Z);
  
  %Add noise now
  </code></pre>
  
  <p>EDIT: So I found out that rand can return a random matrix which will work with the surf function (for some reason it wasn't working for me earlier though). The result looks something like this: <a href="http://i.stack.imgur.com/0RWiH.png" rel="nofollow">noisy 2D gaussian</a></p>
  
  <pre><code>amp = 1;
  x0 = 0;
  y0 = 0;
  sigmaX = 1;
  sigmaY = 1;
  [X,Y] = meshgrid(-3:.1:3);
  %Z = X .* exp(-X.^2 - Y.^2);
  Z = amp*exp(-((X-x0).^2/(2*sigmaX^2)+(Y-y0).^2/(2*sigmaY^2)));
  surf(X, Y, Z);
  
  %Make some noise
  [xRows, xColumns] = size(X);
  [yRows, yColumns] = size(Y);
  
  figure(2)
  X =  -.1 + (.1+.1)*rand(61,61);
  Y =  -.1 + (.1+.1)*rand(61,61);
  Z = amp*exp(-((X-x0).^2/(2*sigmaX^2)+(Y-y0).^2/(2*sigmaY^2)));
  surf(X, Y, Z)
  </code></pre>
  
  <p>But I feel like the Gaussian has largely lost it's typical bell shape and looks more like a slope field than anything. I'm going to try and refine it but I would love any input.</p>