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

w1w2w3生成服从均匀分布的1X10000的随机数矩阵。

函数vercat为垂直串联矩阵,组成一个3X10000的矩阵。

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));

你可能感兴趣的:(matlab)