矩阵的行主序与列主序的分析

1.矩阵在内存中的存储

不管是D3D还是OpenGL,使用的矩阵都是线性代数标准的矩阵,只是在存储方式上有所不同。分别为:行主序(Direct3D),列主序(OpenGL)

存储顺序说明了线性代数中的矩阵如何在线性的内存数组中存储。

例如:内存中使用一个二维数组m存储矩阵,第i行第j列的表示方法分别为:

    行主序:m[i][j]

    列主序:m[j][i]

线性代数意义的同一个矩阵,在d3d 和 openGL 中的存储顺序

线代:a11,a12,a13,a14                  d3d :  a11,a12,a13,a14       OpenGL: a11,a21,a31,a41

a21,a22,a23,a24                             a21,a22,a23,a24                        a12,a22,a32,a42

a31,a32,a33,a34                             a31,a32,a33,a34                        a13,a23,a33,a43

a41,a42,a43,a44                             a41,a42,a43,a44                        a14,a24,a34,a44

2.行主序的矩阵与列主序的矩阵如何转换呢?

不难发现,M行=M列T

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

(0)

相关推荐

  • PHP使用数组实现矩阵数学运算的方法示例

    本文实例讲述了PHP使用数组实现矩阵数学运算的方法.分享给大家供大家参考,具体如下: 矩阵运算就是对两个数据表进行某种数学运算,并得到另一个数据表. 下面的例子中我们创建了一个基本完整的矩阵运算函数库,以便用于矩阵操作的程序中. 来自 PHP5 in Practice  (U.S.)Elliott III & Jonathan D.Eisenhamer <?php // A Library of Matrix Math functions. // All assume a Matrix de

  • C++实现稀疏矩阵的压缩存储实例

    什么是稀疏矩阵呢,就是在M*N的矩阵中,有效值的个数远小于无效值的个数,并且这些数据的分布没有规律.在压缩存储稀疏矩阵的时候我们只存储极少数的有效数据.我们在这里使用三元组存储每一个有效数据,三元组按原矩阵中的位置,以行优先级先后次序依次存放.下面我们来看一下代码实现. #include<iostream> #include<vector> #include<assert.h> using namespace std; template<class T> c

  • C语言实现稀疏矩阵

    本文实例为大家分享了C语言实现稀疏矩阵的具体代码,供大家参考,具体内容如下 #include "stdio.h" #define maxsize 10 typedef struct { int i,j; //非零元素的行.列 int v; //非零元素的值 }Triple; typedef struct { Triple data[maxsize]; int m,n; //矩阵的行.列 }TSMarix; InitTriple(TSMarix *M) { int i,j,k,v,t;

  • C语言实现矩阵翻转(上下翻转、左右翻转)

    C语言实现矩阵翻转 上下翻转与左右翻转 实例代码: #include <stdio.h> void matrix (int m, int n, int t) { int arr[m][n]; int i, j, k; for (i = 0; i < m; i++){ for (j = 0; j < n; j++){ scanf("%d", &arr[i][j]); } } if (t == 0){//左右翻转 for (i = 0; i < m;

  • C语言矩阵连乘 (动态规划)详解

    动态规划法 题目描述:给定n个矩阵{A1,A2....An},其中Ai与Ai+1是可以相乘的,判断这n个矩阵通过加括号的方式相乘,使得相乘的次数最少! 以矩阵链ABCD为例 按照矩阵链长度递增计算最优值 矩阵链长度为1时,分别计算出矩阵链A.B.C.D的最优值 矩阵链长度为2时,分别计算出矩阵链AB.BC.CD的最优值 矩阵链长度为3时,分别计算出矩阵链ABC.BCD的最优值 矩阵链长度为4时,计算出矩阵链ABCD的最优值 动归方程: 分析: k为矩阵链断开的位置 d数组存放矩阵链计算的最优值,

  • C++中实现矩阵的加法和乘法实例

    C++中实现矩阵的加法和乘法实例 实现效果图: 实例代码: #include<iostream> using namespace std; class Matrix { int row;//矩阵的行 int col;//矩阵的列 int **a;//保存二维数组的元素 public: Matrix();//默认构造函数 Matrix(int r, int c); Matrix(const Matrix &is);//拷贝构造函数 void Madd(const Matrix &

  • 矩阵的行主序与列主序的分析

    1.矩阵在内存中的存储 不管是D3D还是OpenGL,使用的矩阵都是线性代数标准的矩阵,只是在存储方式上有所不同.分别为:行主序(Direct3D),列主序(OpenGL) 存储顺序说明了线性代数中的矩阵如何在线性的内存数组中存储. 例如:内存中使用一个二维数组m存储矩阵,第i行第j列的表示方法分别为:     行主序:m[i][j]     列主序:m[j][i] 线性代数意义的同一个矩阵,在d3d 和 openGL 中的存储顺序 线代:a11,a12,a13,a14             

  • numpy.ndarray 交换多维数组(矩阵)的行/列方法

    如下所示: >> import numpy as np >> P = np.eye(3) >> P array([[ 1., 0., 0.], [ 0., 1., 0.], [ 0., 0., 1.]]) 交换第 0 行和第 2 行: >> P[[0, 2], :] = P[[2, 0], :] # P[(0, 2), :] = P[(2, 0), :] >> P array([[ 0., 0., 1.], [ 0., 1., 0.], [ 1.

  • C语言行优先和列优先的问题深入分析

    C语言行优先和列优先的问题深入分析 摘要 本文主要探讨的是"行优先"原则和"列优先"原则的问题. 1. 背景 首先了解"行优先"和"列优先"的知识,这两种方式在数学上的直观描述如下,给定如下矩阵: 根据行优先的原则,其排序方式为 根据列优先的原则,其排序方式为 2. 计算机领域的应用 行列优先原则在计算机领域的应用主要如下.行优先或者列优先没有好坏,但其直接涉及到对内存中数据的最佳存储访问方式.因为在内存使用上,程序访问的内存

  • 取numpy数组的某几行某几列方法

    这个操作在numpy数组上的操作感觉有点麻烦,但是也没办法. 例如 a = [[1,2,3], [4,5,6], [7,8,9]] 取 a 的 2 3 行, 1 2 列 c=[1,2] d =[0,1] 若写为 b = a[c,d] output: [4 8] 取的是 第二行第一列 和第三行第二列的数据 这并不是我们想要的结果. 正确做法是: b = a[c]先取想要的行数据 b = b[:,d] print(b) output: [[4 5] [7 8]] 这才是我们想要的结果.必须要经过这两

  • Python中多个数组行合并及列合并的方法总结

    采用numpy快速将两个矩阵或数组合并成一个数组: import numpy as np 数组 a = [[1,2,3],[4,5,6]] b = [[1,1,1],[2,2,2]] 1.数组纵向合并 1) c = np.vstack((a,b)) c = array([[1, 2, 3], [4, 5, 6], [1, 1, 1], [2, 2, 2]] 2) c = np.r_[a,b] c = array([[1, 2, 3], [4, 5, 6], [1, 1, 1], [2, 2, 2

  • Python 取numpy数组的某几行某几列方法

    直接分析,如原矩阵如下(1): (1) 我们要截取的矩阵(取其一三行,和三四列数据构成矩阵)为如下(2): (2) 错误分析: 取 C 的1 3行,3 4 列,定义 Z = [0,2] #定义行数 d = [2,3] #定义列数 #代码 C_zd = C[z,d] 则结果为: 由结果分析取的是第一行第三列和第三行第四列的数据,并非我们想要的结果. 正确分析: C_A = c[[0,2]] #先取出想要的行数据 C_A = C_A[:,[2,3]] #再取出要求的列数据 print(C_A) #输

  • jQuery实现获取table中鼠标click点击位置行号与列号的方法

    本文实例讲述了jQuery实现获取table中鼠标click点击位置行号与列号的方法.分享给大家供大家参考,具体如下: 先来看看运行效果: 具体代码如下: <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title>www.jb51.net 鼠标点击位置行列号</title> </head> <bo

  • Yii遍历行下每列数据的方法

    本文实例讲述了Yii遍历行下每列数据的方法.分享给大家供大家参考,具体如下: 效果图如下: 控制器(1种): //显示列表 public function actionList() { //实例化对象 $model= new Qiu(); $country = \Yii::$app->db; //查询数据 $data = $country->createCommand("select * from qiu join region on qiu.region_id=region.reg

  • PowerShell中捕获异常时的行号和列号的方法

    如果自己写函数动态地去执行一些脚本块或者脚本文件,那么捕获到异常时行号和列号信息非常有用.例如脚本文件: 复制代码 代码如下: trap{ $info=$_.InvocationInfo "在第{0}行,第{1}列捕获到异常:{2}" -f $info.ScriptLineNumber,$info.OffsetInLine ,$_.Exception.Message continue }   get-date 1gb/2kb Get-Service | foreach {1/0} 执行

  • Oracle实现行转换成列的方法

    本文实例讲述了Oracle实现行转换成列的方法.分享给大家供大家参考,具体如下: 把行转成列 把学生表,成绩表,班级表,学科表 合并成一张成绩表效果如下: 创建表 --班级表 create table CLASS ( ID VARCHAR2(5) not null primary key, CLASSNAME VARCHAR2(10) ); --学生表 create table STUDENT ( ID VARCHAR2(10) not null primary key, NAME VARCHA

随机推荐