精华内容
下载资源
问答
  • 正交投影矩阵-原理及推导

    万次阅读 2019-02-15 15:51:42
    ...当中,P为投影矩阵,由P的表达式能够看出,它具有例如以下性质: 三维投影  三维投影,就是将一个向量投影到一个平面上。同上面一样,如果是将b向量投影到平面上的p向量,则有表达式:...

    来自:https://blog.csdn.net/tengweitw/article/details/41174555

    二维投影

    上图表示的是,向量b在向量a上的投影。显然有例如以下表达式:

    当中,P为投影矩阵,由P的表达式能够看出,它具有例如以下性质:


    三维投影

           三维投影,就是将一个向量投影到一个平面上。同上面一样,如果是将b向量投影到平面上的p向量,则有表达式:

    e是垂直与平面的向量。

     

    因为p向量在平面上。则p向量能够由该平面的2个线性无关向量(正如。在xy平面的不论什么向量都能够由x轴,y轴表示)表示:

     

    因为e垂直平面,则e向量垂直与平面中的随意向量。则有:

    将上式化简求得x:

    又由于p=Ax,Pb=p,则得到投影矩阵为:

    由P的表达式能够看出,它具有例如以下性质:

    上面的投影矩阵是通式。当投影在一维情况时,数值的逆是它的倒数,A即为直线上的随意一个向量a,投影矩阵为:


    实例说明:

     

    如上图,如果我们要将向量b投影到水平面上。其投影为p,a1,a2为水平面的两个线性无关向量,它们的參数分别为:

    那么A=[a1 a2]即:

    由上面我们求得的通式,可得投影矩阵P:

    知道投影矩阵P后。我们能够得到b在水平面上的投影p为:

     

    显然,p与我们图中所看到的的结果同样。这里我们是以三维情况进行举例的,更高维情况。我们无法用图像来描写叙述,可是通式也是成立的。

    展开全文
  • 正交向量 正交矩阵

    千次阅读 2017-11-12 22:36:10
    正交向量 正交矩阵

    正交向量

    “正交向量”是一个数学术语,指点积为零的两个或多个向量

     换句话说, 两个向量正交意味着它们是相互垂直的。若向量α与β正交,则记为α⊥β


    如何求解正交矩阵:

    https://jingyan.baidu.com/article/9faa72318364a7473c28cbe9.html

    正交矩阵

    正交矩阵是实数特殊化的酉矩阵,因此总是正规矩阵。尽管我们在这里只考虑实数矩阵,这个定义可用于其元素来自任何域的矩阵。正交矩阵毕竟是从内积自然引出的,对于复数的矩阵这导致了归一要求。

    定义

      定义 1
      如果:AA'=E(E为单位矩阵,A'表示“矩阵A的转置矩阵”。)或A′A=E,则n阶实矩阵 A称为正交矩阵, 若A为正交阵,则满足以下条件:
      1) A 是正交矩阵
      2) AA′=E(E为单位矩阵)(#add它的转置矩阵是它的逆矩阵,这是很重要的)
      3) A′是正交矩阵
      4) A的各行是单位向量且两两正交
      5) A的各列是单位向量且两两正交
      6) (Ax,Ay)=(x,y) x,y∈R
       正交矩阵通常用字母Q表示。
      举例:A=[r11 r12 r13;r21 r22 r23;r31 r32 r33]
      则有:
    r11^2+r12^2+r13^2=r21^2+r22^2+r23^2=r31^2+r32^2+r33^2=1

    r11*r12+r21*r22+r31*r32=0等性质

      正交方阵是欧氏空间中标准正交基到标准正交基的过渡矩阵。
      在 矩阵论中, 实数 正交矩阵方块矩阵 Q,它的 转置矩阵是它的 逆矩阵:
      ,如果正交矩阵的 行列式为 +1,则我们称之为 特殊正交矩阵:

    概述

      要看出与内积的联系,考虑在  n 维实数 内积空间中的关于正交基写出的向量 vv 的长度的平方是 vv。如果矩阵形式为 Q v 的线性变换保持了向量长度,则
      所以有限维线性 等距同构,比如 旋转反射和它们的组合,都产生正交矩阵。反过来也成立: 正交矩阵蕴涵了正交变换。但是, 线性代数包括了在既不是有限维的也不是同样维度的空间之间的 正交变换,它们没有等价的正交矩阵。
      有多种原由使正交矩阵对理论和实践是重要的。 n× n 正交矩阵形成了一个 ,即指示为 O( n) 的 正交群,它和它的子群广泛的用在数学和物理科学中。例如,分子的 点群O(3) 的子群。因为浮点版本的正交矩阵有有利的性质,它们是字数值线性代数中很多算法比如 QR分解的关键,通过适当的规范化, 离散余弦变换 (用于 MP3 压缩)可用正交矩阵表示。

    例子

      下面是一些小正交矩阵的例子和可能的解释。
      恒等变换。 旋转 16.26°。 针对  x 轴反射。 旋转反演(rotoinversion): 轴 (0,-3/5,4/5),角度90°。 置换坐标轴。

    基本构造

    低维度

      最简单的正交矩阵是 1×1 矩阵 [1] 和 [−1],它们可分别解释为恒等和实数线针对原点的反射。
      如下形式的 2×2 矩阵
      它的正交性要求满足三个方程
      
     
     
     
    在考虑第一个方程时,不丢失一般性而设  p = cos θ,  q = sin θ;因此要么  t = − q, u = p 要么 t =  qu = − p。我们可以解释第一种情况为旋转 θ(θ = 0 是单位矩阵),第二个解释为针对在角 θ/2 的直线的反射。
      旋转 反射 在 45°的反射对换  x 和  y;它是 置换矩阵,在每列和每行带有一个单一的 1(其他都是 0):
      单位矩阵也是置换矩阵。
      反射是它自己的逆,这蕴涵了反射矩阵是 对称的(等于它的转置矩阵)也是正交的。两个旋转矩阵的积是一个旋转矩阵,两个反射矩阵的积也是旋转矩阵。

    更高维度

      不管维度,总是可能把正交矩阵按纯旋转与否来分类,但是对于 3×3 矩阵和更高维度矩阵要比反射复杂多了。例如,
      和 表示通过原点的 反演和关于 z 轴的旋转反演(逆时针旋转90°后针对 x- y平面反射,或逆时针旋转 270°后对原点反演)。
      旋转也变得更加复杂;它们不再由一个角来刻画,并可能影响多于一个平面子空间。尽管经常以一个轴和角来描述 3×3 旋转矩阵,在这个维度旋转轴的存在是偶然的性质而不适用于其他维度。
      但是,我们有了一般适用的基本建造板块如置换、反射、和旋转。

    基本变换

      最基本的置换是换位(transposition),通过交换单位矩阵的两行得到。任何  n× n 置换矩阵都可以构造为最多  n−1 次换位的积。 构造自非零向量  v 的 Householder反射为
      这里的分子是对称矩阵,而分母是  v 的平方量的一个数。这是在垂直于  v 的超平面上的反射(取负平行于 v 任何向量分量)。如果 v 是单位向量,则 Q =  I−2 vv 就足够了。Householder 反射典型的用于同时置零一列的较低部分。任何 n× n 正交矩阵都可以构造为最多 n 次这种反射的积。
      Givens旋转作用于由两个坐标轴所生成的二维(平面)子空间上,按选定角度旋转。它典型的用来置零一个单一的次对角线元素(subdiagonal entry)。任何 n× n 的旋转矩阵都可以构造为最多 n( n−1)/2 次这种旋转的积。在 3x3 矩阵的情况下,三个这种旋转就足够了;并且通过固定这个序列,我们可以用经常叫做 欧拉角的三个角来(尽管不唯一)描述所有 3×3 旋转矩阵。
      雅可比旋转有同 Givens 旋转一样的形式,但是被用做 相似变换,选择来置零 2×2 子矩阵的两个远离对角元素(off-diagonal entry)。

    性质

    矩阵性质

      实数方块矩阵是正交的,当且仅当它的列形成了带有普通欧几里得 点积欧几里得空间 R 的正交规范基,它为真当且仅当它的行形成 R 的正交基。假设带有正交(非正交规范)列的矩阵叫正交矩阵可能是诱人的,但是这种矩阵没有特殊价值而没有特殊名字;他们只是 MM = DD 是 对角矩阵
       任何正交矩阵的行列式是 +1 或 −1。这可从关于行列式的如下基本事实得出:
      反过来不是真的;有 +1 行列式不保证正交性,即使带有正交列,可由下列反例证实。
      对于置换矩阵,行列式是 +1 还是 −1 匹配置换是偶还是奇的 标志,行列式是行的交替函数。
       比行列式限制更强的是正交矩阵总可以是在复数上可对角化来展示特征值的完全的集合,它们全都必须有(复数)绝对值 1。

    群性质

       正交矩阵的逆是正交的,两个正交矩阵的积是正交的。事实上,所有  n× n 正交矩阵的集合满足群的所有公理。它是  n( n−1)/2 维的 紧致 李群,叫做正交群并指示为 O( n)。
      行列式为 +1 的正交矩阵形成了路径连通的子群指标为 2 的  O( n正规子群,叫做旋转的特殊正交群  SO( n)。 商群 O( n)/ SO( n) 同构于 O(1),带有依据行列式选择 [+1] 或 [−1] 的投影映射。带有行列式 −1 的正交矩阵不包括单位矩阵,所以不形成子群而只是 陪集;它也是(分离的)连通的。所以每个正交群被分为两个部分;因为投影映射 分裂O( n) 是  SO( n) 与  O(1)的 半直积。用实用术语说,一个相当的陈述是任何正交矩阵可以通过采用一个旋转矩阵并可能取负它的一列来生成,如我们在 2×2 矩阵中看到的。如果 n 是奇数,则半直积实际上是 直积,任何正交矩阵可以通过采用一个旋转矩阵并可能取负它的所有列来生成。
      现在考虑 ( n+1)×( n+1) 右底元素等于 1 的正交矩阵。最后一列(和最后一行)的余下元素必须是零,而任何两个这种矩阵的积有同样的形式。余下的矩阵是 n× n 正交矩阵;因此 O( n) 是 O( n+1) (和所有更高维群)的子群。
      因为 Householder 正交矩阵形式的基本反射可把任何正交矩阵简约成这种约束形式,一系列的这种反射可以把任何正交矩阵变回单位矩阵;因此正交群是反射群。最后一列可以被固定为任何单位向量,并且每种选择给出不同的 O( n) 在 O( n+1) 中的复本;以这种方式 O( n+1) 是在单位球 S 与纤维  O( n) 上的
      类似的, SO( n) 是  SO( n+1) 的子群;任何特定正交矩阵可以使用类似过程通过 Givens 平面旋转来生成。丛结构持续: SO( n) ↪ SO( n+1) → S。一个单一旋转可以在最后一列的第一行生成一个零,而 n−1 次旋转序列将置零 n× n 旋转矩阵的除了最后一列的最后一行的所有元素。因为平面是固定的,每次旋转只有一个自由度,就是它的角度。通过归纳, SO( n) 因此有
      自由度, O( n) 也是。
      置换矩阵简单一些;它们不形成李群,只是一个有限群, n! 次 对称群 Sn。通过同类的讨论, Sn 是 Sn+1 的子群。偶置换生成行列式 +1 的置换矩阵的子群, n!/2 次交错群。

    规范形式

      更广泛的说,任何正交矩阵的效果分离到在正交二维空间上的独立动作。就是说,如果  Q 是狭义正交的,则你可以找到(旋转)改变基的一个正交矩阵  P,把  Q 带回到分块对角形式:
      ( n 偶数), ( n 奇数)。 这里的矩阵  R1,..., Rk 是 2×2 旋转矩阵,而余下的元素是零。作为例外,一个旋转块可以是对角的, ± I。因此如果需要的话取负一列,并注意 2×2 反射可对角化为 +1 和 −1,任何正交矩阵可变为如下形式
      , 矩阵  R1,…, Rk 给出位于 复平面中单位圆上的特征值的共轭对;所以这个分解复合确定所有带有绝对值 1 的特征值。如果 n 是奇数,至少有一个实数特征值 +1 或 −1;对于 3×3 旋转,关联着 +1 的特征向量是旋转轴。

    数值线性代数

    利益

       数值分析自然的利用了正交矩阵的很多数值线性代数的性质。例如,经常需要计算空间的正交基,或基的正交变更;二者都采用了正交矩阵的形式。有行列式 ±1 和所有模为 1 的特征值是对数值稳定性非常有利的。 一个蕴涵是 条件数为 1 (这是极小的),所以在乘以正交矩阵的时候错误不放大。很多算法为此使用正交矩阵如 Householder反射和 Givens旋转。有帮助的不只是正交矩阵是可逆的,还有它的逆矩阵本质上是免花费的,只需要对换索引(下标)。
      置换是很多算法成功的根本,包括有局部定支点(partial pivoting)的运算繁重的 高斯消去法(这里的置换用来定支点)。但是它们很少明显作为矩阵出现;它们的特殊形式允许更有限的表示,比如 n 个索引的列表。
      同样的,使用 Householder 和 Givens 矩阵的算法典型的使用特殊方法的乘法和存储。例如,Givens 旋转只影响它所乘的矩阵的两行,替代完全的 n 次的 矩阵乘法为更有效的 n 次运算。在使用这些反射和旋转向矩阵介入零的时候,腾出的空间足够存储充足的数据来重生成这个变换。

    分解

      一些重要的 矩阵分解(Golub & Van Loan, 1996)涉及到了正交矩阵,包括:
      QR分解  M =  QRQ 正交, R 上三角。  奇异值分解  M =  UΣVU 和  V 正交, Σ 非负对角。 谱分解 S = QΛQ, S 对称, Q 正交, Λ 对角。 极分解  M = QS, Q 正交, S 对称非负确定。

    展开全文
  • D3DXMatrixOrthoLH +正交投影矩阵

    千次阅读 2016-09-12 20:27:54
    6. D3DXMatrixOrthoLH +正交投影矩阵 #included3d9.h>#included3dx9.h>#pragma comment(lib, "d3d9.lib")#pragma comment(lib, "d3dx9.lib")#define WINDOW_CLASS "UGPDX"#define WINDOW_NAME

    6. D3DXMatrixOrthoLH +正交投影矩阵

    复制代码
    复制代码
    #include<d3d9.h>
    #include
    <d3dx9.h>

    #pragma comment(lib, "d3d9.lib")
    #pragma comment(lib, "d3dx9.lib")

    #define WINDOW_CLASS "UGPDX"
    #define WINDOW_NAME "Ortho Projection Matrix"
    #define WINDOW_WIDTH 640
    #define WINDOW_HEIGHT 480

    // Function Prototypes...
    bool InitializeD3D(HWND hWnd, bool fullscreen);
    bool InitializeObjects();
    void RenderScene();
    void Shutdown();


    // Direct3D object and device.
    LPDIRECT3D9 g_D3D = NULL;
    LPDIRECT3DDEVICE9 g_D3DDevice
    = NULL;
    D3DXMATRIX g_ortho;

    // Vertex buffer to hold the geometry.
    LPDIRECT3DVERTEXBUFFER9 g_VertexBuffer = NULL;

    // A structure for our custom vertex type
    struct stD3DVertex
    {
    float x, y, z;
    unsigned
    long color;
    };

    // Our custom FVF, which describes our custom vertex structure
    #define D3DFVF_VERTEX (D3DFVF_XYZ | D3DFVF_DIFFUSE)


    LRESULT WINAPI MsgProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
    {
    switch(msg)
    {
    case WM_DESTROY:
    PostQuitMessage(
    0);
    return 0;
    break;

    case WM_KEYUP:
    if(wParam == VK_ESCAPE) PostQuitMessage(0);
    break;
    }

    return DefWindowProc(hWnd, msg, wParam, lParam);
    }


    int WINAPI WinMain(HINSTANCE hInst, HINSTANCE prevhInst, LPSTR cmdLine, int show)
    {
    // Register the window class
    WNDCLASSEX wc = { sizeof(WNDCLASSEX), CS_CLASSDC, MsgProc, 0L, 0L,
    GetModuleHandle(NULL), NULL, NULL, NULL, NULL,
    WINDOW_CLASS, NULL };
    RegisterClassEx(
    &wc);

    // Create the application's window
    HWND hWnd = CreateWindow(WINDOW_CLASS, WINDOW_NAME, WS_OVERLAPPEDWINDOW,
    100, 100, WINDOW_WIDTH, WINDOW_HEIGHT, GetDesktopWindow(),
    NULL, wc.hInstance, NULL);

    // Initialize Direct3D
    if(InitializeD3D(hWnd, false))
    {
    // Show the window
    ShowWindow(hWnd, SW_SHOWDEFAULT);
    UpdateWindow(hWnd);

    // Enter the message loop
    MSG msg;
    ZeroMemory(
    &msg, sizeof(msg));

    while(msg.message != WM_QUIT)
    {
    if(PeekMessage(&msg, NULL, 0U, 0U, PM_REMOVE))
    {
    TranslateMessage(
    &msg);
    DispatchMessage(
    &msg);
    }
    else
    RenderScene();
    }
    }

    // Release any and all resources.
    Shutdown();

    // Unregister our window.
    UnregisterClass(WINDOW_CLASS, wc.hInstance);
    return 0;
    }


    bool InitializeD3D(HWND hWnd, bool fullscreen)
    {
    D3DDISPLAYMODE displayMode;

    // Create the D3D object.
    g_D3D = Direct3DCreate9(D3D_SDK_VERSION);
    if(g_D3D == NULL) return false;

    // Get the desktop display mode.
    if(FAILED(g_D3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &displayMode)))
    return false;

    // Set up the structure used to create the D3DDevice
    D3DPRESENT_PARAMETERS d3dpp;
    ZeroMemory(
    &d3dpp, sizeof(d3dpp));

    if(fullscreen)
    {
    d3dpp.Windowed
    = FALSE;
    d3dpp.BackBufferWidth
    = WINDOW_WIDTH;
    d3dpp.BackBufferHeight
    = WINDOW_HEIGHT;
    }
    else
    d3dpp.Windowed
    = TRUE;
    d3dpp.SwapEffect
    = D3DSWAPEFFECT_DISCARD;
    d3dpp.BackBufferFormat
    = displayMode.Format;

    // Create the D3DDevice
    if(FAILED(g_D3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
    D3DCREATE_SOFTWARE_VERTEXPROCESSING,
    &d3dpp, &g_D3DDevice)))
    {
    return false;
    }

    // Initialize any objects we will be displaying.
    if(!InitializeObjects()) return false;

    return true;
    }


    bool InitializeObjects()
    {
    // 生成正交投影矩阵
    //正交投影中,投影向量和观察平面垂直,物体坐标沿观察坐标系的z轴平行投影到观察平面上,
    //观察点和观察平面间的距离不会影响物体的投影大小
    //对于正交投影来说,它的取景范围是一个长方体,只有在这个长方体中的景物才会被绘制出来。
    // Set the projection matrix.
    D3DXMatrixOrthoLH(&g_ortho, WINDOW_WIDTH, WINDOW_HEIGHT, 0.1f, 1000.0f);
    g_D3DDevice
    ->SetTransform(D3DTS_PROJECTION, &g_ortho);

    // Set default rendering states.
    g_D3DDevice->SetRenderState(D3DRS_LIGHTING, FALSE);

    //代表是否绘制三角形的反面。
    // D3DCULL_MODE是背面隐藏消除的意思.
    //SetRenderState( D3DRS_CULLMODE, D3DCULL_NONE )则正反面都绘制。
    //SetRenderState( D3DRS_CULLMODE, D3DCULL_CW ); //绘制顺时针三角形。
    //SetRenderState( D3DRS_CULLMODE, D3DCULL_CCW )绘制逆时针三角形。
    g_D3DDevice->SetRenderState(D3DRS_CULLMODE, D3DCULL_NONE);

    // Fill in our structure to draw an object.
    // x, y, z, color.
    stD3DVertex objData[] =
    {
    {
    -150.0f, -150.0f, 0.1f, D3DCOLOR_XRGB(255,0,0)},
    {
    150.0f, -150.0f, 0.1f, D3DCOLOR_XRGB(0,255,0)},
    {
    0.0f, 150.0f, 0.1f, D3DCOLOR_XRGB(0,0,255)}
    };

    // Create the vertex buffer.
    if(FAILED(g_D3DDevice->CreateVertexBuffer(3 * sizeof(stD3DVertex), 0,
    D3DFVF_VERTEX, D3DPOOL_DEFAULT,
    &g_VertexBuffer, NULL))) return false;

    // Fill the vertex buffer.
    void *ptr;
    if(FAILED(g_VertexBuffer->Lock(0, sizeof(objData), (void**)&ptr, 0))) return false;
    memcpy(ptr, objData,
    sizeof(objData));
    g_VertexBuffer
    ->Unlock();

    return true;
    }


    void RenderScene()
    {
    // Clear the backbuffer.
    g_D3DDevice->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,0), 1.0f, 0);

    // Begin the scene. Start rendering.
    g_D3DDevice->BeginScene();

    // Bind data to the stream, set fvf so D3D knows how our data
    // is made up, then render the object.
    g_D3DDevice->SetStreamSource(0, g_VertexBuffer, 0, sizeof(stD3DVertex));
    g_D3DDevice
    ->SetFVF(D3DFVF_VERTEX);
    g_D3DDevice
    ->DrawPrimitive(D3DPT_TRIANGLELIST, 0, 1);

    // End the scene. Stop rendering.
    g_D3DDevice->EndScene();

    // Display the scene.
    g_D3DDevice->Present(NULL, NULL, NULL, NULL);
    }


    void Shutdown()
    {
    if(g_D3DDevice != NULL) g_D3DDevice->Release();
    if(g_D3D != NULL) g_D3D->Release();
    if(g_VertexBuffer != NULL) g_VertexBuffer->Release();
    }
    展开全文
  • 仔细观察一下这个表达式,我们不难得出向量内积与矩阵乘法之间的联系: 回顾了向量内积之后,我们就比较容易理解正交向量的定义了:若,则称与正交。 也就是说,与正交。 从这个定义出发,我们很容易得出:零...

    正交向量

    在我的博文 程序员的自我修养之数学基础02 中介绍了向量内积的概念。我们知道,对于 n 维向量 \vec{a},\vec{b},其内积为:

    \overrightarrow{a}\cdot \overrightarrow{b}=a_{1}b_1+a_2b_2+...+a_nb_n=\sum_{i=1}^{n}a_ib_i

    仔细观察一下这个表达式,我们不难得出向量内积与矩阵乘法之间的联系:

    \bg_white \overrightarrow{a}\cdot \overrightarrow{b}=\boldsymbol{a}^{T}\boldsymbol{b}=[a_1, a_2,...,a_n]\begin{bmatrix} b_1\\ b_2\\ \vdots \\ b_n \end{bmatrix}

    回顾了向量内积之后,我们就比较容易理解正交向量的定义了:若 \bg_white \overrightarrow{a}\cdot \bg \overrightarrow{ b}=0,则称 \bg_white \overrightarrow{a}\bg_white \overrightarrow{b}正交。

    也就是说, \bg_white \overrightarrow{a}\bg_white \overrightarrow{b}正交 \Leftrightarrow a_{1}b_1+a_2b_2+...+a_nb_n=0

    从这个定义出发,我们很容易得出:零向量与任意同维向量都正交

    在二维或三维尺度上,我们非常容易理解,向量的正交其实就表示两个向量垂直,即夹角为90°。在更高维度的空间中,向量的正交其实就是垂直概念的推广,用夹角的概念可能会失效,用“一个向量在另一个向量方向上投影为0”的说法可能更容易理解一点。

    如果n维向量组\boldsymbol{\alpha _{1},\alpha _{2},...,\alpha _{s}}中的向量两两正交,就称该向量组为正交向量组,也可以称为正交组。易证得,若n维向量组\boldsymbol{\alpha _{1},\alpha _{2},...,\alpha _{s}}是正交向量组,且不包含零向量,则\boldsymbol{\alpha _{1},\alpha _{2},...,\alpha _{s}}线性无关。

    如果正交组中的向量都是单位向量,即各向量的模均为1,则称该向量组为标准正交向量组

    再扩展一下,如果矩阵\boldsymbol{A}的列向量构成正交组,则\boldsymbol{A}\boldsymbol{A^T}是对角矩阵,反之亦然。

    标准正交基

    基,也称为基底,是描述、刻画向量空间的基本工具,向量空间中任意一个元素,都可以唯一地表示成基向量的线性组合。换句话说,给定一组基,就相当于定义了一个坐标系,从而确定了一个向量空间。

    在这里需要注意的是,对于同一个向量空间R^n,标准正交基并不唯一。因为不唯一,所以可以引入过渡矩阵的概念:

    正交矩阵

    若实数域R上的n阶矩阵Q满足QQ^T=E,则称Q为正交矩阵。其中,表示单位矩阵,还记得吗?主对角线的元素都为1,其余位置元素都为0~

    补充一点,方阵为正交矩阵的充要条件是Q 的行向量或列向量构成标准正交组。

    正交矩阵有以下性质:

    之前我们说,矩阵可以看做“映射”。对于正交矩阵,它从实内积空间V映射到V自身,这种变换被称作“正交变换”。正交变换不改变向量的内积,因此。也不影响向量的模、夹角和距离。我们可以理解为,同维空间内坐标轴的整体变换,因此施以正交变换后,图形的几何形状不变,可以通过施加正交变换更好的研究“形状”。

    结合着上面的叙述,我们将正交矩阵和标准正交基联系起来,可以得到:

     

    参考:

    https://wenku.baidu.com/view/e6d6a3b00975f46527d3e1a5.html

    https://wenku.baidu.com/view/6b3e2fdca58da0116c174912.html?sxts=1567562044157

    https://blog.csdn.net/qq_20412595/article/details/81195373

    展开全文
  • 因为我这里的帖子基本上是写给自己回忆的,所以原理公式什么的就没写出来了,想了解的同学可以去看网易公开课的线性代数关于投影正交矩阵那几集 我这里给出来matlab代码,大家如果有题目要做,直接将相应的矩阵...
  • 主要内容:将公式计算得到的投影矩阵与从OpenGL中获得的投影矩阵进行比较,验证公式正确与否。注:1、OpenGL中矩阵以1维数组形式;2、OpenGL中矩阵以列为主序;3、OpenGL中矩阵乘法为矩阵乘以列向量,即如下形式:p2...
  • 示例 g = gsch(a) a := 是一个矩阵gramch(a) 创建 Gramschmidt 矩阵。 列是单位向量。 它使用两个子程序 proj.m 和 projv.m。 它们生成投影矩阵和投影向量分别
  • 原文:http://blog.csdn.net/songzitea/article/details/18219237引言当面对的数据被抽象为...首先,定义两个维数相同的向量的内积为:(a1,a2,⋯,an)T⋅(b1,b2,⋯,bn)T=a1b1+a2b2+⋯+anbn内积运算将两个向量映射为一...
  • 若两个向量 xxx,yyy 垂直,则有 xTy=0x^Ty = 0xTy=0。 证明:根据毕达哥拉斯定理有 ∣x∣2+∣y∣2=∣x+y∣2|x|^2 + |y|^2 = |x+y|^2∣x∣2+∣y∣2=∣x+y∣2 又 ∣x∣2=xTx|x|^2 = x^Tx∣x∣2=xTx,∣y∣2=yTy|y|^2=...
  • 3D数学 矩阵和线性变换之正交投影

    千次阅读 2015-07-20 20:31:07
    这里给出一个正交投影在法向量(而且同时又是单位向量)为(x,y,z)平面上的投影矩阵,数学证明暂时不说,详见《3d数学基础 图形与游戏开发》。 2. 投影矩阵编程示例void Matrix3X3::setOrthProject(Vector3 &...
  • 正交投影

    千次阅读 2017-07-22 12:41:37
    我们在初中就应该学过投影,那么什么是投影呢?形象点说,就是将你需要投影的东西上的每一点向你要投影的平面作垂线,垂线与平面的交点的集合就是你的投影。注意这里我们的投影是向量的...其中,P为投影矩阵,由P的表
  • 向量表示,投影,协方差矩阵,PCA

    千次阅读 2014-11-19 22:50:14
    当面对的数据被抽象为一组向量,那么有必要研究一些向量的数学性质。而这些数学性质将成为PCA的理论基础。 理论描述 向量运算即:内积。首先,定义两个维数相同的向量的内积为: (a1,a2,⋯,an)T⋅(b1,...
  • 【线性代数】正交投影

    万次阅读 多人点赞 2014-11-16 18:07:28
    我们在初中就应该学过投影,那么什么是投影呢?形象点说,就是将你需要投影的东西上的每一点向你要投影的平面作垂线,垂线与平面的交点的集合就是你的投影。注意这里我们的投影是向量的...其中,P为投影矩阵,由P的表
  • 其中p是b在a方向上的投影,则有:(1) (2) (3) (正交)因此可得 进而可得 (P为矩阵:Ax=b的形式,bp均为向量,则A矩阵)其中 就是说一个向量b在a方向的投影可写作一个与a有关的矩阵左乘b的形式。至此,我们...
  • 矩阵论(七):投影矩阵

    万次阅读 多人点赞 2019-01-18 23:32:03
    投影矩阵 投影的定义 投影矩阵 求法 性质 投影矩阵的应用 从投影角度看广义逆 从投影角度看最小二乘 。。。 投影的定义 什么是投影?下图给出了投影的直观理解: 如图是在R3R^3R3空间中,一条直线lll与一...
  • 正交矩阵

    2020-11-23 12:56:36
    向量的基本运算 ...一维正交:点乘 = 0,向量在另一个向量上的投影; 二维正交正交矩阵,一个是原矩阵,一个是变换矩阵矩阵的旋转或镜像; https://www.bilibili.com/video/BV1Kx411h7wU?p=6 ...
  • 绘制矩形 新建一个矩形渲染器: public class RectangleRenderer implements GLSurfaceView.Renderer 先定义顶点着色器: #version 300 es ...layout (location = 1) in vec4 aColor; out vec4 vCol...
  • 投影矩阵

    千次阅读 2017-10-19 06:19:00
    作者:桂。 时间:2017-10-1906:02:00 链接:... 前言 ...最近在交替投影算法中,用到投影矩阵,简单记录。...一、投影矩阵定义 ...定义向量b的正交投影为p: 联立二式:...
  • 子空间与正交投影

    千次阅读 2017-11-26 12:29:32
    最近需要用子空间、正交投影的概念,找了些资料,理解了相关概念,整理如下。 子空间和子空间的基  定义所有 n 维复向量的集合为 n 维复向量空间,即 Cn 。如果令 mn ,则 m 个 n 维复向量的...
  • 正交基和标准正交基: 前言: 经过上一次线性代数学习之向量空间,维度,和四大子空间的学习,对于空间的概念已经有了非常深刻的认识了,而描述空间很重要的方式除了维度以外,那就是空间的基了,而如小标题所示...
  • 课程简介18.06是Gilbert Strang教授在MIT开的线性代数公开课,课程视频以及相关资料请见...课程笔记先给出正交标准矩阵的定义,然后讨论其性质,最后给出一个构造正交标准矩阵的方法。1. 正交标准矩阵 Orthonormal M
  • 4.差别二:OpenGL使用列向量(即矩阵右乘列向量进行变换 根据差别一:我们只需对左手系进行运算后对zzz取负即可 如何取负,将取负操作联入除法操作,即将www取负 这样最终可以得到正确的CVV 根据差别...
  • 正交投影 ② 透视投影
  • 镜像、正交投影和切变的推导都可根据缩放变形而来。在要缩放方向上去缩放因子k,如果|k|1,物体“膨胀”;k=0,正交投影;k 1. 缩放 01. 沿坐标轴缩放 2D中有两个缩放因子Kx和Ky,p和q是原来的基...
  • Android OpenGL正交投影

    2017-08-02 16:34:26
    Android OpenGL正交投影 1、正交投影 在OpenGL里,渲染的一切物体都要映射到x轴和y轴上[-1, 1]的范围内,这个范围的坐标被称为归一化设备坐标,其独立于屏幕实际的尺寸或形状。 但在横屏模式下,东西会被压扁。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 11,952
精华内容 4,780
关键字:

向量a的正交投影矩阵