File Exchange

image thumbnail

Stabilized Gram-Schmidt Orthonormal Method

version (1.31 KB) by Reza Ahmadzadeh
Stabilized Gram-Schmidt Orthonormal Method


Updated 21 Dec 2016

View License

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
A =
0.9487 -0.3162
0.3162 0.9487
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])
ans =
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

Cite As

Reza Ahmadzadeh (2020). Stabilized Gram-Schmidt Orthonormal Method (, MATLAB Central File Exchange. Retrieved .

Comments and Ratings (4)

Raul Jimenez

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


Felipe Serrenho

Change line:
w = (dot(v,u) / dot(u,u)) * u;
w = (dot(u,v) / dot(u,u)) * u;
So it work with complex vectors as well

Hai Dang Nguyen


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.

MATLAB Release Compatibility
Created with R2012a
Compatible with any release
Platform Compatibility
Windows macOS Linux