MATLAB中施密特正交化的实现
Posted martin-soaring
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MATLAB中施密特正交化的实现相关的知识,希望对你有一定的参考价值。
2、MATLAB程序
1 function b=Schmidt_orthogonalization(a) 2 [m,n] = size(a); 3 if(m<n) 4 error(‘行小于列,无法计算,请转置后重新输入‘); 5 return 6 end 7 b=zeros(m,n); 8 %正交化 9 b(:,1)=a(:,1); 10 for i=2:n 11 for j=1:i-1 12 b(:,i)=b(:,i)-dot(a(:,i),b(:,j))/dot(b(:,j),b(:,j))*b(:,j); 13 end 14 b(:,i)=b(:,i)+a(:,i); 15 end 16 17 %单位化 18 % for k=1:n 19 % b(:,k)=b(:,k)/norm(b(:,k)); 20 % end
说明1:如果需要单位化,把单位化后的注释删除即可
说明2:输入a为列向量矩阵,输出b也为列向量矩阵
以上是关于MATLAB中施密特正交化的实现的主要内容,如果未能解决你的问题,请参考以下文章
《Linear Algebra and Its Applications》-chaper6-正交性和最小二乘法- 格拉姆-施密特方法
机器学习|数学基础Mathematics for Machine Learning系列之线性代数(15):向量的内积长度及正交性