unifrnd可以創建隨機的連續均勻分布的數組。
1.R = unifrnd(A,B)
returns an array of random numbers chosen from the continuous uniform distribution on the interval from A to B. The size of R is the common size of A and B if both are arrays. If either parameter is a scalar, the size of R is the size of the otherparameter.
這是matlab自帶的幫助文件的解釋,比較簡略,以下補充本人的理解:
A和B可以是向量也可以是標量,若兩個都是向量,則兩者都是列向量或都是行向量,而且維數相等。從A到B產生一系列區間,若A和B均為向量,則區間個數等於他們的維數;若其中恰有一個是向量,假設A為向量,則區間個數等於A的維數;若兩個均為標量,則A <= B,區間個數為1,且區間為[A,B]。然后在這一系列區間中隨機產生連續均勻分布的數組R並返回之。具體例子下述。
例1.
>> x=[1:9];
>> y = [2:10];
>> unifrnd(x,y)
得到
ans =
1.9595 2.6557 3.0357 4.8491 5.9340 6.6787 7.7577 8.7431 9.3922
從x到y產生區間[1,2],[2,3],[3,4],[4,5],[5,6],[6,7],[7,8],[8,9],[9.10].然后從每個區間產生一個隨機數,得執
x = [1:3];
R1 = unifrnd(x,1);
R2 = unifrnd(1,x);
得到
R1 =
1 NaN NaN
R2 =
1.0000 1.2769 1.0923
not a number”即不是數字。觀察語句R1 = unifrnd(x,1);“從x到1”產生區間[1,1],[2,1],[3,1]顯然只有第一個區間可以取得“隨機數”1,其余區間不符合規定,故而返回NaN。
觀察R2 = unifrnd(1,x);從1到x產生區間[1,1],[1,2],[1,3],取得隨機數組R2.
2.R = unifrnd(A,B,M,N,…) or R = unifrnd(A,B,[M,N,…])
returns an M-by-N-by-… array.
當有多個參數時,首先先確定A、B是標量還是向量,然后生成一個M行N列、..多維的矩陣、並給矩陣中的每一個元素按照例1的情況賦值。
例3.
執行指令
A= 0;
B = 100;
ma = [3 1];
R = unifrnd(A,B,3,1)
得到
R =
63.0171
69.1787
38.9173