怎么理解对角矩阵压缩存储

abcggvg 2013-11-11 06:19:51
引用百度文库的http://wenku.baidu.com/link?url=P-7cfC3sxlF5xM4jYzRHxX53IfakwT6vwPY10uHihDNMqPhFn_q68hWo_fwCdx8h_BavMeRrIeU-xrf79qddDtbwqTASp2g2JWB4BdSDqny



对角矩阵

     所有的非零元素集中在以主对角线为中心的带状区域中,即除了主对角线和主对角线相邻两侧的若干条对角线上的元素之外,其余元素皆为零的矩阵为对角矩阵。    
其中:带状矩阵所有非0元素都集中在以主对角线为中心的带状区域,半带宽为d时, 非0元素有(2d+1)*n-(1+d)*d个(左上角与右下角补上0后,最后必须减掉),如下图怕示:



  非零元素仅出现在主对角上(aii,0≤i≤n-1),紧邻主对角线上面的那条对角线上(ai,i+1 ,0≤i≤n-2)和紧邻主对角线下面的那条对角线上(a i+1,i,0≤i≤n-2)。当|i-j|>1时,元素aij=0。
     由此可知,一个k对角线矩阵(k为奇数)A是满足下述条件的矩阵:

若|i-j|>(k-1)/2,则元素aij=0。
   若|i-j|<=(k-1)/2
     对角矩阵可按行优先顺序或对角线的顺序,将其压缩存储到一个向量中,并且也能找到每个非零元素和向量下标的对应关系。

这里若|i-j|>(k-1)/2,则元素aij=0。
比如有个7*7的矩阵,数组第一行下标a[0][0]--a[0][6],也就是a00-a07,按他的定义说a00-a07都是为0,但是不符合图片说的那样,零元素在对艰辛两边啊,应该怎么理解?
...全文
864 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lm_whales 2013-11-18
  • 打赏
  • 举报
回复
原始数据 7*7 =49 个压缩后 5*7 =35个,节省 49 -35 =14 个数据 去掉 6个 0 则为 35 -6 =29 个数据。
lm_whales 2013-11-17
  • 打赏
  • 举报
回复
实际是把 7*7 阶矩阵,压缩成 (d*2+1) * n = 5*7 阶矩阵,并用1维数组存储 原始数据 7*7 =49 个压缩后 5*5 =35个,节省 49 -35 =14 个数据 去掉 6个 0 则为 35 -6 =29 个数据。
lm_whales 2013-11-17
  • 打赏
  • 举报
回复
例子是 5*5,d=1 你的是 7*7,d=2 按行存放 0 0 a00 a01 a02 0 a10 a11 a12 a13 a20 a21 a22 a23 a24 a31 a32 a33 a34 a35 a42 a43 a44 a45 a46 a53 a54 a55 a56 0 a64 a65 a66 0 0

33,321

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧