4
我寫了一個函數,生成一個尺寸爲nxd
的稀疏矩陣,並在每列中放入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,我需要從矩陣大小中選擇非零條目的數量。給出一個密度基本上可以依賴於矩陣的大小。
我對如何挑選索引和填充它們有點困惑......我用一個非常昂貴的循環來做這件事,並希望得到幫助。
編輯:
一切都必須稀疏。如果我不以稀疏的方式完成,足夠大的矩陣會在內存中崩潰。
似乎它做的工作。謝謝先生。 –