matlab隨機數及行、列歸一化
(1) 按照【正態分佈】生成一定範圍內的隨機數
A1=normrnd(0.9533,0.0022,[23,10000]); (均值,標準差,[行數,列數])
(2) 按【均勻分佈】生成一定範圍內的隨機數
w1=unifrnd(0,1,10000,23); (上限,下限,行數,列數)
(3)生成 【給定值】的隨機數
A=[1 1 1 1 2 2 2 2 3 3 3 3 3 4 4 4 4 4 5 5 5 5 5];
B=A(randperm(length(A)));
結果生成:
[1 3 5 3 4 2 5 5 5 3 1 4 2 5 4 2 1 2 4 1 3 3 4]
如果把第二行改為:
B=(randperm(length(A)));
[5 11 19 17 10 3 2 9 6 14 21 20 8 15 16 1 18 23 22 4 12 13 7]生成的為A長度的值(23) 的1-23內的隨機數
等同於 直接輸入 B=(randperm(23);
(4)行歸一化
w1=unifrnd(0,1,1,10000);
w2=unifrnd(0,1,1,10000);
w3=unifrnd(0,1,1,10000);
w=vertcat(w1,w2,w3);
W=w.';
for i = 1:10000
W(i,:)=W(i,:)/sum(W(i,:));
end
w1、w2、w3生成服從均勻分佈的1X10000的隨機數矩陣。
函式vercat為垂直串聯矩陣,組成一個
那for迴圈是將每一行的數值除以該行數值總和,即歸一化。
(5)行、列數值除以該列最大值
w1=unifrnd(0,1,1,10000);
w2=unifrnd(0,1,1,10000);
w3=unifrnd(0,1,1,10000);
w=vertcat(w1,w2,w3);
w1Max=max(w')';%求每一行的最大值
xMax=repmat(w1Max,[1 10000]);%平鋪最大值
w1=w./xMax; %每一行的每一個數值都除以該行最大值
w2Max=max(w);%求每一列的最大值
w22=vertcat(w2Max,w2Max,w2Max);%平鋪最大值
w2=w./w22;%每一列的每一個數值都除以該列最大值
(6)取矩陣對角線元素
A11=(diag(A1));