特殊矩阵的压缩存储

1. 对称矩阵

        用一个一维数组B来存储对称矩阵A下三角部分。设k为矩阵元素a_{ij}在数组B中的位置下标。那么a_{ij}前面有i-1行元素,共\frac{(1+i-1)(i-1)}{2}=\frac{i(i-1)}{2}个。再加上j个,一共\frac{i(i-1)}{2}+j个元素,得到K的表达式如下:

k=\frac{i(i-1)}{2}+j-1

下标从0开始要减个1,若要存储上三角部分,类似的推导过程。

2. 三角矩阵 

        用一个一维数组B来存储三角矩阵A下三角部分,上三角部分的同一常数c。其实这和上面的对称矩阵一样,只是数组B需要多一个存储单元来存储常数c。将常数c放在数组的最后。

k=\left\{\begin{matrix} \frac{i(i-1)}{2}+j-1&,i\geq j \\ \frac{(1+n)n}{2}&,i<j \end{matrix}\right.

类似推出,存上三角部分k的表达式:

k=\left\{\begin{matrix} \frac{(i-1)(2n-i+2)}{2}+j-i &,i\leq j \\ \frac{(n+1)n}{2}& ,i>j \end{matrix}\right.

3. 三对角矩阵

        也称带状矩阵,|i-j|>1的地方全是0。前i-1行元素个数3(i-1)-1=3i-4,第i行的元素个数j-i+2,一共2i+j-2k=2i+j-3

已知k求i,j:

i-1行的元素一共3i-4

i行的元素一共3i-1

对于第k+1个元素:3i-4<k+1\leq 3i-1i\geq (k+2)/3

i=\left \lceil (k+2)/3 \right \rceil

向上取整,已知k,i就可得到 j

4. 稀疏矩阵

        采用三元组(行标,列标,值)的形式存储。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不想学习啊啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值