matlab实现qr分解

二维平面的qr分解

  • 设列向量 v 1 = [ − 1 2 ] , v 2 = [ 6 8 ] v_1=\begin{bmatrix} -1\\ 2 \end{bmatrix},v_2=\begin{bmatrix} 6\\ 8 \end{bmatrix} v1=[12],v2=[68]组成向量组
    A = [ − 1 6 2 8 ] A=\begin{bmatrix} -1&6\\ 2&8 \end{bmatrix} A=[1268]
  • Q T Q = I 2 Q^TQ=I_2 QTQ=I2 Q Q Q向量第一列和第二列是长度为1的单位向量,代表了新建立的坐标系,以 v 1 v_1 v1为x轴,取与 v 1 v_1 v1垂直的向量为y轴,R是向量 v 1 , v 2 v_1,v_2 v1,v2 在新坐标轴下的坐标值。第一列只有一个元素,说明新坐标轴是以 v 1 v_1 v1 为方向
    在这里插入图片描述
format rat
v1 = [-1;2];
v2 = [6;8];
A = [v1 v2];
[Q,R] = qr(A);

实例:测量n点是否在一条直线上

  • 对施密特正交系生成方法做了改进形成QR正交分解,调用matlab程序qr
  • Q是规范化的坐标系
  • 首先将坐标原点定位最后一点,可以看出经过分解后坐标相差很小,可以近似认为在一条直线上
    在这里插入图片描述
L = [-2 -1 0 2;3 2.3 1.7 0.33];
M = L - [2;0.33] * [1 1 1 1];
[Q1,R1] = qr(M);

三维坐标

v1 = [9,-5,2];
v2 = [0,7,5];
v3 = [-1,-9,6];
v4 = [2,5,-3];
A = [v1',v2',v3',v4'];
[Q,R] = qr(A);

在这里插入图片描述

  • Q是规范化的三维正交坐标系,R中第一列向量只有一个元素,说明新坐标系x轴取得方向是v1。R中的第二列向量最后一个元素为0,说明在v3上没有值,其处在v1和v2张成的平面上。

猜你喜欢

转载自blog.csdn.net/xiong_xin/article/details/107130621
今日推荐