サイズがnxd
のスパース行列を生成する関数を作成し、各列に0以外の値を2つ入れます。N個の非零要素を持つランダムなスパース行列を生成する
function [M] = generateSparse(n,d)
M = sparse(d,n);
sz = size(M);
nnzs = 2;
val = ceil(rand(nnzs,n));
inds = zeros(nnzs,d);
for i=1:n
ind = randperm(d,nnzs);
inds(:,i) = ind;
end
points = (1:n);
nnzInds = zeros(nnzs,d);
for i=1:nnzs
nnzInd = sub2ind(sz, inds(i,:), points);
nnzInds(i,:) = nnzInd;
end
M(nnzInds) = val;
end
しかし、私は別のパラメータにNUM-NNZそれがランダムにNUM-NNZ細胞を選択作り、そこに私ができる1
を置く機能を与えることができるようにしたいのですが密度が必要なのでsprandを使用してください。そして、マトリックスサイズから信頼できない数の非ゼロエントリが必要です。密度を与えることは、基本的にはマトリクスサイズに依存します。
インデックスを選択して記入する方法についてちょっと混乱しています...私は非常に高価で、助けに感謝するループでやりました。
編集:
すべてがスパースでなければなりません。私がまばらな方法でそれをしないと、十分に大きな行列がメモリにクラッシュします。
それは仕事をしたようです。ありがとうございます。 –