您的位置:首页 > 其它

三对角矩阵压缩存储--注意对角元素的下标

2015-06-27 09:37 190 查看
对角矩阵的压缩存储
  对角矩阵是指所有非零元素全部集中在中心几条对角线上的矩阵。下面以三对角矩阵(所有非零元素集中在中心三条对角线上)为例描述对角矩阵的压缩存储方法。图2-8是一个三对角矩阵,使用一维数组a[m]来压缩存储矩阵信息,则数组中的元素依次为a11,a12,a21,a22,a23,a32,...,am。



  其中,矩阵元素aij的下标i、j与其存储在数组中的位置下标k(从0开始计数)存在如下的对应关系:当i=1时,k=j-1(1≤j≤2);当i>1时,k=2×i+j-3(|i-j|≤1)。推导方法如下:
  ① 当i=1时,j的取值就是矩阵元素aij在数组中的存储次序,数组中存储下标为次序减1,故k=j-1。
  ② 当i>1时,在矩阵元素aij之前已经存储了i-1行矩阵元素和第i行的j-i+1个元素,又已知矩阵的第1行需要存储2个元素,第2~i-1行均需要存储3个元素,故矩阵元素aij之前一共存储的元素数有2+(i-1-2+1)×3+(j-i+1)=2×i+j-3。故aij的存储下标为2×i+j-3。
  例如,矩阵元素a33存储在一维数组中的位置为k=2×i+j-3=2×3+3-3=6,即一维数组中的第7元素。

主对角线上方那条有j-i=1,主对角线有j-i=0,下方有j-i=-1,以行为索引
所以自然可得k=(3i-2)+(j-i);=> k=2i+j-2
反之当i=j时,k=3i-2=3(i-1)+1,当i=j+1时(下方那条),k=3i-1=3(i-1)+2,当i=j-1时,k=3(i-1)

所以用k除3取余,设商为x,余为y,y=0则B[k]=a[x+1][x],y=1,B[k]=a[x+1][x+1],y=2,B[k]=a[x+1][x+2]

3.

i,j k
1,0 0
1,1 1
1,2 2

2,1 3
2,2 4
2,3 5

3,2 6
3,3 7
3,4 8
k = (i+j)+(i-2) = 2*i+j-2
i = k/3取整+1
j = k/3取整+k%3
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: