我想創建一個矩陣,該矩陣的每一行具有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)
我想創建一個矩陣,該矩陣的每一行具有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)
對於100
通過7
,您可以使用bsxfun
:
a = rand(100,7);
a = bsxfun(@rdivide,a.',sum(a.')).';
這裏每一行的總和= 1
的問題是,通過使用一個for循環,你改變每次循環的向量的總和。你應該充分利用MATLAB的作用於整個矩陣的能力一次:
a = rand(1,7);
a = a./sum(a);
如果你還希望各行要_uniformly distributed_(不指定),你需要像[這]的方法(https://stackoverflow.com/q/8064629/2586922)。通過獲得的和產生統計獨立的樣品和分都不行 –
@LuisMendo我正要寫同樣的事情 –