假如说有一个矩阵A = 1, 3, 0, 0
0, 1, 0, 0
0, 0, 3, 0
0, 0, 5, 1
共6个有效点。
通常存储稀疏矩阵用三元组,比如c语言,
//为了方便跟后面matlab的对比,下标从1开始
int r[6] = [1, 1, 2, 3, 4, 4];//row index
int v[6] = [1, 2, 1, 3, 5, 1];//value of element
int c[6] = [1, 2, 2, 3, 3, 4];//column index
那么所需要的存储空间是,4 * 6 + 4 * 6 + 8 * 6 = 96 bytes
而在matlab中,存储的是三个矩阵(当然啦,实际上是一片连续的空间)
第1个矩阵r存各个元素的row index,
第2个矩阵v存各个元素的value,这两部分跟上面c语言的一样
第3个矩阵h存各列的头指针(指向第2个矩阵中的各列)+ 1个标志矩阵结束的 flag 指针
(实际上这个flag指针的位置跟在v数组之后,注意是这个指针本身,不是它的内容,它的内容应该是一个定值)
那么所需空间就是4 *