对角矩阵压缩算法
以44对角矩阵为例子
首先我们得知道对角矩阵的概念对角矩阵(diagonal matrix)是一个主对角线之外的元素皆为0的矩阵,常写为diag(a1,a2,...,an) 。对角矩阵可以认为是矩阵中最简单的一种,值得一提的是:对角线上的元素可以为 0 或其他值,对角线上元素相等的对角矩阵称为数量矩阵;对角线上元素全为1的对角矩阵称为单位矩阵—来自百度百科。
比如 1 2 0 0
5 4 3 0
0 1 2 3
0 0 2 3
我们可以发现三对角矩阵首行和尾行分别有2个非0元素,其余行都是3个非0元素
推广至在有n 行的情况 非0 元素 3(n-2)+4=3n-2
推算下标k值
对数组a【i】【j】分配至对角矩阵前i行中有(i-1)3+2根据对角线推元素位子得不是i-j+1就是j-i+1所以k=(i-1)3+2+j-i+1=i2+j
所以我们可以用k的值来推算i,j i=(k+1)/3
J=k-2*i;
得出k于i,j的关系后便可以将矩阵进行压缩从而避免了0元素的空间占用,直接将矩阵压缩