Gram-Schmidt正交化及其修正方法的matlab实现

1. 标准Gram-Schmidt正交化

function [v]=GS1(A)

v(:,1)=A(:,1)/norm(A(:,1));%归一化

[Ahang,Alie]=size(A); %矩阵的行和列

for k=2:Alie %求解第j列正交向量

    res(:,1)=A(:,k);

    for i=1:k-1%减去待求向量在以求向量上的投影

        res=res-v(:,i)'*res*v(:,i);

    end

    v(:,k)=res/norm(res);%归一化

end

2. 修正Gram-Schmidt正交化

function [v]=GS2(A)

[Ahang,Alie]=size(A); %矩阵的行和列

v(:,1)=A(:,1)/norm(A(:,1));

for k=2:Alie

    for i=k:Alie

        A(:,i)=A(:,i)-A(:,i)'*v(:,k-1)*v(:,k-1);%对剩余向量进行修正

    end

    v(:,k)=A(:,k)/norm(A(:,k));%对本次得到的正交向量进行归一化

end

你可能感兴趣的:(function,matlab)