我有一个C++程序,它突出了用于以压缩列存储格式表示矩阵的各种数组。
例如,我有以下数据:
column_pointer = [ 0,3,6,8, 10]
row_index = [0,1,3,1,2,3,0,2,1,3]
values = [4.0, 3.0, 3.0, 2.7, 1.8, 0.3, 3.2, 3.0, 0.1, 1.0]我想用MATLAB中的这个值创建一个稀疏矩阵。但我发现的唯一方法是使用spconvert并从三重奏表单加载它。
还有别的办法吗?
发布于 2018-03-28 04:11:02
sparse可用于从行、列和值的索引创建稀疏矩阵。您需要向索引中添加一个以获取1-based索引,并使用diff和repelem将column_pointer转换为col_index。
row_index = row_index + 1;
col_index = repelem(1:numel(column_pointer)-1,diff(column_pointer));
result = sparse(row_index, col_index, values);发布于 2018-04-05 17:22:14
我从@rahnema1 1中获得灵感,并能够对其进行编码。
a = column_pointer+1;
a = diff(a);
Ci =row_index+1;
Cx = values
count = 1;
Cp = [];
for i = 1:length(a)
Cp = [Cp count * ones(1,a(i))];
count = count+1;
end
M = sparse(Ci, Cp, Cx);https://stackoverflow.com/questions/49525649
复制相似问题