三对角矩阵压缩存储--注意对角元素的下标
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
对角矩阵是指所有非零元素全部集中在中心几条对角线上的矩阵。下面以三对角矩阵(所有非零元素集中在中心三条对角线上)为例描述对角矩阵的压缩存储方法。图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
相关文章推荐
- 统计学习方法(三)--感知机
- 解决fedora更新后没有无线连接问题,及无线网卡的手动安装全过程
- openSession()与getCurrentSession()区别
- 安卓之上传文件,即HTTP提交表单
- iOS UIView非常用方法及属性详解
- 在安卓开发中如何在代码中设置ImageView中src中这个参数
- Hibernate4和spring整合 NO session for current Session
- LNMP笔记:Centos下安装Postfix,替换sendmail发送邮件
- oracle用户管理入门
- oracle用户管理入门
- 点点滴滴
- oracle用户管理入门
- oracle用户管理入门
- Android实现推送方式解决方案
- 通过时间,获得星期的开始时间,结束时间
- 耶稣十三门徒,找到犹大,共十三人,报到三退出
- 安卓之缩回软键盘
- C++链表
- 技术主管的瑞士军刀
- 生成任意长度的随机数 JS