%x=10*rand(1,100)-5; %y=10*rand(1,100)-5; %z=x+2*y+3+randn(size(x)); %data=round([x; y; z]); data=[2 -5 -4 0 -4 3 3 2 -4 2 0 5 1 3 0 -1 3 -4 -4 -3 -1 3 3 -4 -1 0 -1 2 1 -2 -1 -5 5 -3 -4 -1 -3 0 -2 5 4 -4 2 -2 -1 0 4 -1 5 -2 2 2 0 2 2 -3 -4 5 -3 -5 1 4 2 -3 -1 0 5 -3 4 1 -1 -3 -1 0 -4 1 -3 -1 1 -2 -2 1 -2 3 5 2 -2 1 -4 4 4 3 -2 1 -5 -1 -2 -3 -3 -1; -4 1 0 2 2 1 -5 -4 -2 0 2 -1 3 2 5 0 -2 -4 1 3 -1 -4 -2 -3 -2 -1 0 0 4 0 4 1 5 -3 2 -2 2 2 -4 -2 -3 2 3 -2 3 2 -5 1 -1 4 -5 0 -1 0 3 -2 3 0 -5 -3 2 0 -3 -2 1 -3 2 -3 4 -2 3 -3 -2 -4 1 2 0 -1 1 1 2 1 4 -3 2 -3 -4 1 0 0 2 3 -1 2 -1 3 3 -2 1 1; -3 2 -2 6 1 10 -2 -3 -3 5 7 6 11 10 15 2 1 -10 0 5 0 -2 2 -8 -2 4 4 2 9 2 9 1 17 -3 3 -3 4 7 -7 2 0 2 11 -3 9 7 -3 5 5 10 -5 5 3 4 9 -5 5 7 -10 -7 8 7 -3 -2 3 -3 14 -6 14 2 8 -7 -1 -6 1 9 0 1 8 4 6 7 8 -2 12 1 -6 6 -2 6 8 11 -3 8 -3 8 8 -6 1 5]; coef=planeFitViaTls(data); % Plot the result x2=linspace(min(data(1,:)), max(data(1,:))); y2=linspace(min(data(2,:)), max(data(2,:))); [xx2, yy2]=meshgrid(x2, y2); zz2=(-coef(1)*xx2-coef(2)*yy2-coef(4))/coef(3); mesh(xx2, yy2, zz2); axis tight; for i=1:size(data,2) line(data(1,i), data(2,i), data(3, i), 'marker', 'o'); end title('Plane fit via total least-squares');