您当前的位置:首页 >> 观察 >  
旋转矩阵缩水软件_旋转矩阵的原理
来源: 互联网      时间:2023-05-14 21:48:32


(相关资料图)

1、①三元组表表示的矩阵转置的思想方法   第一步:根据A矩阵的行数、列数和非零元总数确定B矩阵的列数、行数和非零元总数。

2、   第二步:当三元组表非空(A矩阵的非零元不为0)时,根据A矩阵三元组表的结点空间data(以下简称为三元组表),将A的三元组表a->data置换为B的三元组表b->data。

3、 ②三元组表的转置  方法一:简单地交换a->data中i和j中的内容,得到按列优先顺序存储倒b->data;再将b->data重排成按行优先顺序的三元组表。

4、  方法二:由于A的列是B的行,因此,按a->data的列序转置,所得到的转置矩阵B的三元组表b->data必定是按行优先存放的。

5、  按这种方法设计的算法,其基本思想是:对A中的每一列col(0≤col≤a->n-1),通过从头至尾扫描三元组表a->data,找出所有列号等于col的那些三元组,将它们的行号和列号互换后依次放人b->data中,即可得到B的按行优先的压缩存贮表示。

6、 ③具体算法: void TransMatrix(TriTupleTable *b,TriTupleTable *a) {//*a,*b是矩阵A、B的三元组表表示,求A转置为B int p,q,col; b->m=a->n; b->n=a->m; //A和B的行列总数互换 b->t=a->t; //非零元总数 if(b->t<=0) Error("A=0"); //A中无非零元,退出 q=0; for(col=0;coln;col++) //对A的每一列 for(p=0;pt;p++) //扫描A的三元组表 if(a->data[p].j==col){ //找列号为col的三元组 b->data[q).i=a->data[p].j; b->data[q].j=a->data[p].i; b->data[q].v=a->data[p].v; q++; } } //TransMatrix ④算法分析   该算法的时间主要耗费在col和p的二重循环上:  若A的列数为n,非零元素个数t,则执行时间为O(n×t),即与A的列数和非零元素个数的乘积成正比。

本文到此分享完毕,希望对大家有所帮助。

标签:

X 关闭

X 关闭