matlab练习程序(正交分解)
正交分解可以将多个向量分解为互相正交的多个向量。
可以用QR分解方法或施密特正交化方法,施密特正交化方法一般数值不稳定。
假设有{V1...Vn}向量组,施密特正交化算法原理如下:
结果中{β1...βn}为一组正交基,{η1...ηn}为其标准正交基。
matlab代码如下:
clear all;close all;clc; A=[1 2 3;4 5 6;7 8 9]; %qr正交分解 [Q1, ~] = qr(A); Q1 %施密特正交分解 [m,n] = size(A); Q2 = zeros(m,n); for j = 1:n v = A(:,j); for i = 1:j-1 R(i,j) = Q2(:,i)'*A(:,j); v = v - R(i,j)*Q2(:,i); end R(j,j) = norm(v); Q2(:,j) = v/R(j,j); end Q2