IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    [原]矩阵的转置

    caimouse发表于 2017-02-13 14:05:46
    love 0
    设A为m×n阶矩阵(即m行n列),第i 行j 列的元素是a(i,j),即:A=a(i,j)
    定义A的转置为这样一个n×m阶矩阵B,满足B=a(j,i),即 b (i,j)=a (j,i)(B的第i行第j列元素是A的第j行第i列元素),记A'=B。(有些书记为AT=B,这里T为A的上标)

    直观来看,将A的所有元素绕着一条从第1行第1列元素出发的右下方45度的射线作镜面反转,即得到A的转置。


    1. det(A')=det(A),即转置矩阵的行列式不变

    2. 行向量的转置是一个列向量,反之亦然。
    所有的行向量的集合形成一个向量空间,它是所有列向量集合的对偶空间。

    3. 首先,列向量和行向量是线性代数的知识点.行向量之所以叫行向量是因为分量是横着排的,列向量之所以叫列向量是因为分量是竖着排的,两者并没有本质区别.n维就是因为向量有n个分量,(1,2,4)就是三维行向量,若将1,2,4竖着写在小括号里,就叫三维列向量

    4. 向量有两种表达形式,行向量和列向量,对应的矩阵也有行矩阵和列矩阵。采用哪种形式和左右手系无关。

    行矩阵:
        三个轴向量为前三行,最后一行为位移变换
        连乘时从左到右接合,左边的变换先应用
        变换向量时为vector * matrix
    列矩阵:
        三个轴向量为前三列,最后一列为位移变换
        连乘时从右到左接合,右边的变换先应用,注意这和*运算符的接合顺序相反
        变换向量时为matrix * vector


    DirectX采用了行矩阵,OpenGL采用了列矩阵,而基于OpenGL的OpenInventor却采用了行矩阵。图形学的书籍多使用列矩阵和列向量,或许是学术上的传统,或许是节省版面的原因;而不少图形库选择了行矩阵是因为行矩阵在现有的内存架构上效率要略高于列矩阵。另外,行矩阵的接合顺序和*运算符是一致的,这一点非常适合运算符重载。


    当你在两个不同系统之间进行转换时,就要注意矩阵转置,或者说向量转置.



    1. C++标准模板库从入门到精通 

    http://edu.csdn.net/course/detail/3324

    2.跟老菜鸟学C++

    http://edu.csdn.net/course/detail/2901

    3. 跟老菜鸟学python

    http://edu.csdn.net/course/detail/2592

    4. 在VC2015里学会使用tinyxml库

    http://edu.csdn.net/course/detail/2590

    5. 在Windows下SVN的版本管理与实战 

     http://edu.csdn.net/course/detail/2579

    6.Visual Studio 2015开发C++程序的基本使用 

    http://edu.csdn.net/course/detail/2570

    7.在VC2015里使用protobuf协议

    http://edu.csdn.net/course/detail/2582

    8.在VC2015里学会使用MySQL数据库

    http://edu.csdn.net/course/detail/2672



沪ICP备19023445号-2号
友情链接