An orthonormal basis is a basis that consists of mutually orthogonal vectors of length 1. The standard basis for a space of any dimension is an example of an orthonormal basis. There is a nice algorithm called the Gram-Schmidt process that will always find an orthonormal basis given a non-orthonormal basis. Example: [

,

,

,

] represent a basis and we sould like to find [

,

,

,

] which will represent an orthonormal basis.
The following is the Gram-Schmidt process. The number of steps is equal to the number of vectors in the basis. In this case there are 4 steps:
Step 1:
Step 2:
Step 3:
Step 4:
And the pattern continues for as many vectors you are given.