【发布时间】:2023-01-07 03:40:56
【问题描述】:
我想获得压缩稀疏行存储的行指针。
clear all;
close all;
clc;
A = [55 0 0 49; 0 0 0 0; 0 0 73 0; 0 0 0 0];
n = size(A,1); % no of rows
m = size(A,2); % no of columns
CRS.values = [];
CRS.columns = [];
CRS.rowpointer = [];
counter = 0;
for i=1:n
for j=1:m
if (A(i,j) ~= 0)
CRS.values = [CRS.values A(i,j)];
CRS.columns = [CRS.columns j];
CRS.rowpointer = [CRS.rowpointer i,i+1];
end
end
end
我试过上面的编码。 CRS.values 是矩阵中非零值的数组。 CRS.columns 是矩阵非零元素的列索引数组。我已经根据需要获得了 CRS.values 和 CRS.columns。但我无法获得 CRS.rowpointer 数组。
CRS.rowpointer 的预期输出:[ 1, 3, 3, 4, 4]
【问题讨论】:
-
添加语言标签
-
您之前的问题使用了 python 和
scipy.sparse。但这看起来像 MATLAB 代码,创建了一个struct。 MATLAB 有稀疏矩阵,但它们使用 csc 格式。 -
您预期的数组大小为 n+1,每行一个值。您的代码为每个非零元素添加一对值。您仍然不了解 CSR indptr 背后的逻辑。