旋转矩阵的原理旋转矩阵是怎么个旋转法?是如何进行排列组合的?为什么就能做到覆盖了复式呢?明明有一些组合没有呀?
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/21 09:23:44
![旋转矩阵的原理旋转矩阵是怎么个旋转法?是如何进行排列组合的?为什么就能做到覆盖了复式呢?明明有一些组合没有呀?](/uploads/image/z/11473913-65-3.jpg?t=%E6%97%8B%E8%BD%AC%E7%9F%A9%E9%98%B5%E7%9A%84%E5%8E%9F%E7%90%86%E6%97%8B%E8%BD%AC%E7%9F%A9%E9%98%B5%E6%98%AF%E6%80%8E%E4%B9%88%E4%B8%AA%E6%97%8B%E8%BD%AC%E6%B3%95%3F%E6%98%AF%E5%A6%82%E4%BD%95%E8%BF%9B%E8%A1%8C%E6%8E%92%E5%88%97%E7%BB%84%E5%90%88%E7%9A%84%3F%E4%B8%BA%E4%BB%80%E4%B9%88%E5%B0%B1%E8%83%BD%E5%81%9A%E5%88%B0%E8%A6%86%E7%9B%96%E4%BA%86%E5%A4%8D%E5%BC%8F%E5%91%A2%3F%E6%98%8E%E6%98%8E%E6%9C%89%E4%B8%80%E4%BA%9B%E7%BB%84%E5%90%88%E6%B2%A1%E6%9C%89%E5%91%80%3F)
旋转矩阵的原理旋转矩阵是怎么个旋转法?是如何进行排列组合的?为什么就能做到覆盖了复式呢?明明有一些组合没有呀?
旋转矩阵的原理
旋转矩阵是怎么个旋转法?是如何进行排列组合的?为什么就能做到覆盖了复式呢?明明有一些组合没有呀?
旋转矩阵的原理旋转矩阵是怎么个旋转法?是如何进行排列组合的?为什么就能做到覆盖了复式呢?明明有一些组合没有呀?
①三元组表表示的矩阵转置的思想方法
第一步:根据A矩阵的行数、列数和非零元总数确定B矩阵的列数、行数和非零元总数.
第二步:当三元组表非空(A矩阵的非零元不为0)时,根据A矩阵三元组表的结点空间data(以下简称为三元组表),将A的三元组表a->data置换为B的三元组表b->data.
②三元组表的转置
方法一:简单地交换a->data中i和j中的内容,得到按列优先顺序存储倒b->data;再将b->data重排成按行优先顺序的三元组表.
方法二:由于A的列是B的行,因此,按a->data的列序转置,所得到的转置矩阵B的三元组表b->data必定是按行优先存放的.
按这种方法设计的算法,其基本思想是:对A中的每一列col(0≤col≤a->n-1),通过从头至尾扫描三元组表a->data,找出所有列号等于col的那些三元组,将它们的行号和列号互换后依次放人b->data中,即可得到B的按行优先的压缩存贮表示.
③具体算法:
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->tdata[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的列数和非零元素个数的乘积成正比.