>> A=[1 0 -1 -1; 2 1 -1 -4; -2 -1 1 4; -1 0 1 1] A = 1 0 -1 -1 2 1 -1 -4 -2 -1 1 4 -1 0 1 1 >> A*inv(A'*A)*A' Warning: Matrix is singular to working precision. (Type "warning off MATLAB:singularMatrix" to suppress this warning.) ans = NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN >> B=colbasis(A) B = 1 0 2 1 -2 -1 -1 0 >> P=B*inv(B'*B)*B' P = 0.5000 0 0 -0.5000 0 0.5000 -0.5000 0 0 -0.5000 0.5000 0 -0.5000 0 0 0.5000 >> P*A ans = 1.0000 0 -1.0000 -1.0000 2.0000 1.0000 -1.0000 -4.0000 -2.0000 -1.0000 1.0000 4.0000 -1.0000 0 1.0000 1.0000 >> P*A-A ans = 1.0e-15 * 0.2220 0 -0.2220 -0.2220 0 0 0 0 0 0 0 0 -0.2220 0 0.2220 0.2220