(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu 转载请标明来源)

参考:计算机图形学

矩阵计算是图形学上的一个基础处理

a) 向量的Matrix矩阵变换

三维Matrix通常是四行四列的entry[4][4]: 实际使用的是三行四列,最后行为补充行
[A00,A01, A02, A03]
[A10,A11, A12, A13]
[A20,A21, A22, A23]
[0,  0, 0, 1 ]

向量相当于
[X]
[Y]
[Z]
[1]

一个三维向量计算的时候:
Matrix3d * vec3dOrg  = Vec3dNew
Vec3dNew.x = vec3dOrg.x * matrix3d.entry[0][0] + vec3dOrg.y * matrix3d.entry[0][1] + vec3dOrg.z * matrix3d.entry[0][2] + matrix3d.entry[0][3];
Vec3dNew.y = vec3dOrg.x * matrix3d.entry[1][0] + vec3dOrg.y * matrix3d.entry[1][1] + vec3dOrg.z * matrix3d.entry[1][2] + matrix3d.entry[1][3];
Vec3dNew.z = vec3dOrg.x * matrix3d.entry[2][0] + vec3dOrg.y * matrix3d.entry[2][1] + vec3dOrg.z * matrix3d.entry[2][2] + matrix3d.entry[2][3];

b) Matrix矩阵乘法

注意: 后做的偏移放前面
例如先偏移M1,再旋转M2,复合矩阵 = M2 * M1

矩阵相乘的时候,效果如下,结果为
Cij = 求和(k=1..n) AikBkj

[A11,A12, A13, A14]
[A21,A22, A23, A24]
[A31,A32, A33, A34]
[0,  0, 0, 1 ]
*
[B11,B12, B13, B14]
[B21,B22, B23, B24]
[B31,B32, B33, B34]
[0,  0, 0, 1 ]

结果为
Cij = 求和(k=1..n) AikBkj

---前两列                                                             
A11 * B11 + A12 * B21 + A13 * B31,  A11 * B12 + A12 * B22 + A13 * B32,
A21 * B11 + A22 * B21 + A23 * B31,  A21 * B12 + A22 * B22 + A23 * B32,
A31 * B11 + A32 * B21 + A33 * B31,  A31 * B12 + A32 * B22 + A33 * B32,
0, 0                                                                  
---后两列                                                             
A11 * B13 + A12 * B23 + A13 * B33,  A11 * B14 + A12 * B24 + A13 * B34 
A21 * B13 + A22 * B23 + A23 * B33,  A21 * B14 + A22 * B24 + A23 * B34,
A31 * B13 + A32 * B23 + A33 * B33,  A31 * B14 + A32 * B24 + A33 * B34,
0, 1

例如: 放大矩阵 与 位移矩阵相乘 相当于先位移再放大(先做的偏移放后面乘)
[2,0,0,0] // 以0,0,0为基点放大两倍
[0,2,0,0]
[0,0,2,0]
[0,0,0,1]

[1,0,0,-6] // x.y各位移6
[0,1,0,-6]
[0,0,1,0]
[0,0,0,1]

结果为:
[2,0,0,-12] 
[0,2,0,-12]
[0,0,2,0]
[0,0,0,1]
如果乘以向量(0,0,0)得到的结果是(12,12,0),相当于(0,0,0)点位移(6,6,0),并整体坐标放大两位

c) Matrix求逆矩阵

求逆矩阵的话,就必须要知道秩det的概念
1.矩阵的秩
Det为组合矩阵单元生成的一个数

二维情况
[A11 A12]
[A21, A22]
detA = A11 * A22 – A12 * A21

N维情况
[A11,A12, A13]
[A21,A22, A23]
[A31,A32, A33]

通过行求
detA = 求合(j=1..n)   (-1)^(j+k)  Ajk det[A]jk 
例如: 三阶时detA = A11 * (A22 * A33 – A23 * A32) - A12 * (A21 * A33 – A23 * A31) + A13 * (A21 * A33 – A23 * A31)

通过列求
detA = 求合(k=1..n)   (-1)^(j+k)  Ajk det[A]jk 
例如: 三阶时detA = A11 * (A22 * A33 – A23 * A32) – A21 * (A12 * A33 – A13 * A32) + A31 * (A12 * A23 – A13 * A22)

注: det[A]jk 为去掉 j行 k列后形成的 n-1阶矩阵的秩

2. 求逆矩阵-通过秩
Mjk = (-1)^(j+k) * det[A]kj / detA

注: det[A]kj 为去掉k行j列后形成的秩
   detA为矩阵A的秩
注: detA不能为0,否则矩阵没有逆矩阵

3. 求逆矩阵-通过自然变换
通过例如
第1行 = 第1行 + 第三行 * 2
第1列 = 第1列 – 第二列
第2列 = 第2列 / 2;
类似方向,
1. 把A矩阵通过多次变换  单位矩阵
2. 同理,把单位矩阵经历相同的变换,单位矩阵就会成为A的逆矩阵 (A)^-1

原理就是
A * A^(-1) = 单位矩阵
A * P1 * P2 * P3 ..* Pn = 单位矩阵

A^(-1) = P1 * P2 * P3 ..*Pn = 单位矩阵 * P1 * P2 * P3 ..*Pn

(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu 转载请标明来源)

Matrix矩阵计算相关推荐

  1. 「SymPy」符号运算(6) 矩阵Matrix及基础运算

    目录 导言 创建矩阵 列表初始化 行向量 列向量 维度和数集 二元函数 `lambda`函数 特殊矩阵 基本操作 索引 增删 基础运算 向量运算 导言 在前几篇文章中,我们学习了SymPy基础/高级用 ...

  2. PX4代码解析(1)

    前言 做pixhawk飞控有一段时间了,但在学习过程中遇到许多困难,目前网上找不到比较完整的PX4学习笔记,我打算结合自己理解,写写自己对PX4源码的理解,不一定对,只是希望与各位大佬交流交流,同时梳 ...

  3. Kaldi的简单介绍和基本使用说明

    Kaldi的简单介绍和基本使用说明 前言 一.ASR简介 1.语音识别系统 特征提取: 声学模型 发音词典 语言模型 语音解码 2. ASR项目 二.Kaldi简介 三.Kaldi项目的结构 四.Ka ...

  4. 2.建立场景图形-2叶节点(Geode)和几何信息

    目录 〇. 提要: 一 .Geometry 概述 1. 操作方法 2.向量与数组类 3.Drawable类 - Geometry 4.PrimitiveSet 类图 二.叶节点(Geode) 三.组节 ...

  5. 如何赢在混合云与计算时代?解读英特尔再度回归芯“智”向

    自从2021年2月履新英特尔公司的第八任CEO,帕特·基尔格(Pat Gelsinger)就从混合云与计算软件CEO转而成为世界上最大的"芯公司"CEO.作为全球第一大芯片设计与制 ...

  6. 矩阵计算(Matrix Computations) 1.3~1.4整理

    矩阵计算(Matrix Computations) 1.3~1.4 今天接着总结Matrix Computations的第一章. 这次总结一下1.3, 1.4节. 目录 矩阵计算(Matrix Com ...

  7. 矩阵计算_密码应用(Matrix calculation_cryptology)

    徐映红老师矩阵计算第一节课,上课内容是对于矩阵知识与相关术语词汇的复习.作业是编一个密码相关的小程序. 原理 二战时期,为了避免信息背敌方截获破译,需要对发送的信息进行加密. 这里,刚好运用我们学习一 ...

  8. 矩阵计算在计算机科学中,开发者必读:计算机科学中的线性代数(附论文)

    来源:机器之心 作者:Petros Drineas.Michael W. Mahoney 本文共3994字,建议阅读6分钟.本文为你分享一篇来自普渡大学与UC Berkeley两位教授的概述论文中的线 ...

  9. python获取数组中大于某一阈值的那些索引值_java矩阵计算及其在统计中的应用(一)...

    该文介绍了java colt和commons-math3的一些矩阵计算API,并且使用colt库简单实现了基于法方程组法的最小二乘法,结构方程模型的梯度下降参数估计,广义混合效应模型(多层广义线性模型 ...

最新文章

  1. php连接mysql数据库测试_php连接mysql数据库连接测试文件
  2. nginx动静分离配置_nginx动静分离实战
  3. StarField模拟星空
  4. java 类 方法继承_java – 在方法重写中返回继承的类而不是超类
  5. oracle 视图权限 oracle 创建视图权限不足( ORA-01031: 权限不足)
  6. 支持vxlan的服务器网卡,3台服务器互通vxlan
  7. java中的dao模式
  8. 【POJ2104】K-th Number(区间第k小的数---主席树模版题+离散化)
  9. resin设置权限_如何配置resin 3.1.9
  10. FPGA之JESD204B接口——总体概要 实例 下
  11. 【IDE】IAR for ARM官网下载链接(包含一些历史版本)
  12. 如何区分独立服务器与VPS主机?
  13. 干货 | 超级全面的电容知识
  14. 读取xml文件转成ListT对象的两种方法
  15. android studio marvin 配置
  16. NACOS2.1. 最新版本启动报错Caused by: java.sql.SQLSyntaxErrorException: Unknown column ‘encrypted_data_
  17. 决策树剪枝算法:REP/PEP/CCP算法
  18. 牛客华为题库刷题笔记
  19. 这些数据知识库至少够你用10年(关键还免费)
  20. 钉钉支持鸿蒙系统,鸿蒙系统

热门文章

  1. ibm tivoli_在Tivoli Access Manager上为电子商务编写外部认证接口服务器
  2. 解决:operation not permitted, unlink 'D:\study\dva-boot-admin-master\dva-boot-adm
  3. 20张PPT:看透美国股市和经济
  4. SMRT测序文献阅读笔记
  5. 苹果8参数配置_黑苹果引导工具-Clover EFI bootloader(支持苹果10.12以上系统)
  6. 《道德情操论》和《国富论》
  7. Echarts 极坐标系下的多色柱状图
  8. KKB : MySQL创建千万测试数据
  9. HTML5如何实现视频直播功能
  10. Python制作抖音同款含褶皱面料图