% generate data: m = 3.0; b = -40.0; n = 20; x = 120.0*rand(n, 1); y = m*x + b + 15.0*randn(n, 1); % compute mean squared error for a range of slopes and intercepts: slopes = 0.0:0.1:5.0; intercepts = -200:10:200; error_surface = zeros(length(intercepts), length(slopes)); for i = 1:length(intercepts) for j = 1:length(slopes) error_surface(i,j) = meanSquaredError(x, y, [slopes(j), intercepts(i)]); end end % plot the error surface: figure() [ss, ii] = meshgrid(slopes, intercepts); surface(ss, ii, error_surface); xlabel('slope', 'rotation', 7.5) ylabel('intercept', 'rotation', -22.5) zlabel('mean squared error') set(gca,'xtick', (-5:2.5:5)) grid on view(3)