This is an implementation of Stabilized Gram-Schmidt Orthonormal Approach.
This algorithm receives a set of linearly independent vectors and generates a set of orthonormal vectors. For instance consider two vectors u = [2 2], v=[3 1], the output of the algorithm is e1 = [-0.3162 0.9487], e2= [0.9487 0.3162], which are two orthonormal vectors.
The input to the code is the set of vectors that should be given in a column-wise matrix. For instance, for the above-mentioned example the input would be:
V = [3 2;1 2]
and then we can run the code as
A = GramSchmidt(V)
and the result would be
This also works for k vectors (k>2) each one with n elements.
Another example is :
GramSchmidt([1 2 3;4 5 6;0 1 5;6 0 7;7 2 6])
0.0990 0.3569 0.1677
0.3961 0.7776 -0.1358
0 0.2167 0.8662
0.5941 -0.4589 0.3674
0.6931 -0.1020 -0.2612
Reza Ahmadzadeh (2020). Stabilized Gram-Schmidt Orthonormal Method (https://www.mathworks.com/matlabcentral/fileexchange/51467-stabilized-gram-schmidt-orthonormal-method), MATLAB Central File Exchange. Retrieved .
Hi, I have a question this method is Modified Gram Schmitt or the standar is beacuase I need to reduce the error in the Gram Schmitt process
w = (dot(v,u) / dot(u,u)) * u;
w = (dot(u,v) / dot(u,u)) * u;
So it work with complex vectors as well
Added a help to the test file.
A test script has been added to show the usage of the function both in 2D and 3D.