从MATLAB稀疏矩阵中提取压缩列存储向量

时间:2018-04-06 18:04:21

标签: matlab sparse-matrix

我在MATLAB中有以下矩阵。

A =

     1     3     0     2     0
     0     1     0     0     2
     0     0     4     0     0
     1     0     0     0     4
     0     2     0     2     0

我可以使用sparse(A)命令获取三元组表单,但是有一种内置方法可以从MATLAB获取column_pointer,row_index和值,还是应该编写代码? (我有一个C ++中的工作代码,用于将三元组转换为压缩列存储,我必须将其移植到.m文件中,我认为)

MATLAB' s find()仍然提供三元组形式。但我想要压缩列存储形式如下所示。 (MATLAB基于1个索引。所以我认为col_ptr和row_index都可以增加1)

col_ptr =   [0 2 5 6 8 10];
row_index = [ 0 3 0 1 4 2 0 4 1 3]
values  =   [ 1 1 3 1 2 4 2 2 2 4]

1 个答案:

答案 0 :(得分:1)

我认为这样做:

col_ptr = [0 cumsum(sum(A~=0,1))];
[row_index, ~, values] = find(A);
row_index = row_index.'-1;
values = values.';