matlab中的隨機矩陣及其相關函數的使用

一、rand函數的用法

  1. R=rand(n) 產生一個N*N的隨機矩陣,其中的元素來自0-1均勻分佈
  2. R=rand([M,N]) 產生一個M*N的隨機矩陣
  3. R=rand(size(A)) 產生一個同矩陣A大小一致的隨機矩陣

舉例如下:

r=a+(b-a).*rand(100,1);//產生一個[a,b]之間的100*1的隨機矩陣

二、randi函數

  1. R=randi(IMAX,N) 產生一個N*N的矩陣,其中矩陣的元素均來自於離散均勻分佈1:IMAX之間
  2. R=randi(IMAX,M,N)或者randi(IMAX,[M,N])   產生一個M*N的隨機整數矩陣
  3. R=randi([IMIN,IMAX],[M,N])  產生一個IMIN:IMAX之間的M*N的隨機整數矩陣
       隨機數字序列是由均勻分佈的僞隨機數產生器的間隔狀態決定。我們可以通過控制默認的數據流來控制隨機數字序列的產生。
       將默認流重置到固定的狀態可以產生重複的數字序列,將stream置於不同的狀態會導致不同的計算。
r=randi(10,100,1,'unit32');
r=randi([-10,10],100,1);
//通過結果可以發現,i1和i2產生的隨機數組完全相同,這是因爲默認流的狀態設置爲相同的狀態。
defaultStream=RandStream.getDefaultStream;
savedState=defaultStream.State;
i1=randi(10,1,5);
defaultStream.State=savedState;
i2=randi(10,1,5);

三、randn函數的用法

  1. randn(N)   產生標準正態分佈的N*N的隨機矩陣
  2. randn([M,N])  M*N的隨機矩陣
  3. randn(size(A))  同A一致的隨機矩陣

    用法用例:

//產生一個均值爲1,標準差爲2的正態分佈的隨機數組
r=1+2.*randn(100,1);

四、randperm函數與sprand函數

  1. randperm(n)  產生一個1-n之間的隨機順序
  2. sprand   用於產生隨機稀疏矩陣(服從0-1分佈)
  3. sprand(S)   用於產生同S結構相同的隨機稀疏矩陣,但元素都是0-1之間的隨機數
  4. sprand(m,n,density)  m*n的隨機稀疏矩陣,它的非零元素個數近似與m*n*density,density在0-1之間,且不要過大
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章