首页>评论 > 正文

旋转矩阵的理解和使用 旋转矩阵的原理

2023-08-29 09:25:05 来源:城市网


【资料图】

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的列数和非零元素个数的乘积成正比。

相信通过旋转矩阵的原理这篇文章能帮到你,在和好朋友分享的时候,也欢迎感兴趣小伙伴们一起来探讨。

本文由用户上传,如有侵权请联系删除!

标签:

精彩推荐

关于我们 | 联系我们 | 免责声明 | 诚聘英才 | 广告招商 | 网站导航

 

Copyright @ 2008-2020  www.cguiw.com  All Rights Reserved

品质网 版权所有
 

联系我们:435 227 67@qq.com
 

未经品质网书面授权,请勿转载内容或建立镜像,违者依法必究!