带状对角矩阵压缩算法

首先,要明白的是带状对角矩阵的含义。即所有的非零元素集中在以主对角线为中心的带状区域中,即除了主对角线和主对角线相邻两侧的若干条对角线上的元素之外,其余元素皆为零的矩阵为对角矩阵。

带状矩阵所有非0元素都集中在以主对角线为中心的带状区域,半带宽为d时, 对左上角和右下角进行补“0”,如下图,则非0元素有(2d+1)*n-(1+d)*d个

当|i-j|>1时,元素a[i][j]=0。

 

为了节省空间(压缩),用一维数组A[]来存储

k=i*(2d+1)+d+(j-i)(k从0开始)

(i*(2d+1)表示前i行一共有几个元素,而d+(j-i)这一项是用来确定第i行中,第j列前有几个元素,如以i=j为例时,这时j-i=0)

反推公式为

i=k/5

j=k%5

posted @ 2020-10-20 20:59  huyoo  阅读(568)  评论(0编辑  收藏  举报