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
posted @ 2024-01-13 13:59  Dsp Tian  阅读(148)  评论(0编辑  收藏  举报