手动创建索引:
m = 10;
n = 8;
p = 0.3;
r = repmat(randperm(m), 1, n);
c = repmat(randperm(n), 1, m);
row_idx = r(1:ceil(p*m*n));
col_idx = c(1:ceil(p*m*n));
ran_num = rand(1, ceil(p*m*n));
s = sparse(row_idx, col_idx, ran_num, m, n);
full(s)
0.1842 0 0 0 0.0133 0 0.0620 0
0 0 0 0 0.2999 0 0.1967 0
0 0 0 0.1341 0 0 0 0.0934
0 0 0.4561 0 0 0 0 0.8949
0.1017 0.0715 0 0 0 0 0 0
0.0538 0.7363 0 0 0.3321 0 0 0
0 0 0.5619 0.2973 0 0.4417 0 0
0 0 0 0.8972 0 0.5972 0 0
0 0 0.2425 0 0 0.9954 0 0.7455
0 0.3074 0 0 0 0 0.2126 0
稀疏性测试:
nnz(s)/numel(s)
ans =
0.3000
以下是一个较小的示例。密度低于 0.5,尺寸为 5x5,并且在所有行和列中仍然有非零元素是不可能的。
m = 5;
n = 5;
p = 0.5;
r = repmat(randperm(m), 1, n);
c = repmat(randperm(n), 1, m);
row_idx = r(1:ceil(p*m*n));
col_idx = c(1:ceil(p*m*n));
ran_num = rand(1, ceil(p*m*n));
s = sparse(row_idx, col_idx, ran_num, m, n);
full(s)
ans =
1.8078 0 0 0 0
0 0 0 0.7891 0
0 1.5096 0 0 0
0 0 0 0 1.0909
0 0 1.1130 0 0