2014-02-08 189 views
0

我试图用Matlab生成一个稀疏随机矩阵,但目前遇到问题。这是我目前在的地方。生成一个稀疏行随机矩阵?

N=10 
i = round(rand(1,N)*10)+1 
j = round(rand(1,N)*10)+1 

S1 = sparse (i,j,1,N,N); 
S = full(S1) 

rowsum = sum(S,2); 
S = bsxfun(@rdivide, S, rowsum); 

现在这最后一行是失败的地方。稀疏矩阵中有一些零行。

所以我的问题是我如何规范化每行还保留零行?

+0

线'S1 =稀疏(I,J,1,N,N);'会导致错误,以及。在某些情况下,max(i)和max(j)为11,超过了NxN的大小。 – Daniel

回答

1

这是一个非常简单的模型我会用:

%logical matrix, a web page links to 20% of the other websites on average. This is a strange model, but I don't have a better idear: 
doeslink=rand(N)<.2.*1-eye(N) 
%generate random link weights 
S=rand(N).*doeslink 
%avoid nans 
rowsum(rowsum==0)=1 
%normalise 
S = bsxfun(@rdivide, S, rowsum); 
+0

谢谢。我会投你的答案,但我太新了。 – user3288167

+0

您可以通过单击复选标记来始终[接受答案](http://meta.stackexchange.com/q/5234/179419)。这表明你已经找到了解决方案,这不再是一个悬而未决的问题。 – Daniel