从 MATLAB 稀疏矩阵中提取压缩列存储向量
Extract the Compressed Column Storage vectors from 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 的 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]
我认为这样做:
col_ptr = [0 cumsum(sum(A~=0,1))];
[row_index, ~, values] = find(A);
row_index = row_index.'-1;
values = values.';
我在 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 的 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]
我认为这样做:
col_ptr = [0 cumsum(sum(A~=0,1))];
[row_index, ~, values] = find(A);
row_index = row_index.'-1;
values = values.';