2014-02-08 154 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