2017-07-06 87 views
1

我想創建一個矩陣,該矩陣的每一行具有7在[0,1]真實隨機數和數字中的每個行的總和應等於1。 該矩陣具有100行和7列。我該怎麼做?首先,我創建一個有1行7列的數組。然後編寫代碼如下。我嘗試正常的行數,但每行的總和變得超過1.如何解決它?感謝您抽出時間。如何創建隨機標準化數字的數組?

a = rand(1,7); 
for i=1:7 
a(i) = a(i)/sum(a); 
end 
sum(a) 
+2

如果你還希望各行要_uniformly distributed_(不指定),你需要像[這]的方法(https://stackoverflow.com/q/8064629/2586922)。通過獲得的和產生統計獨立的樣品和分都不行 –

+0

@LuisMendo我正要寫同樣的事情 –

回答

4

對於100通過7,您可以使用bsxfun

a = rand(100,7); 
a = bsxfun(@rdivide,a.',sum(a.')).'; 

這裏每一行的總和= 1

2

的問題是,通過使用一個for循環,你改變每次循環的向量的總和。你應該充分利用MATLAB的作用於整個矩陣的能力一次:

a = rand(1,7); 
a = a./sum(a);