matlab中各種高斯相關函數


matlab中各種高斯相關函數

最常見的是產生服從一維標准正態分布的隨機數

  1. n=100
  2. x=randn(1,n) 

實現服從任意一維高斯分布的隨機數

  1. u=10
  2. sigma=4
  3. x=sigma*randn(1,n)+u 

產生服從多元高斯分布的隨機變量函數mvnrnd,[multivarite normal random]

  1. n=100; %產生隨機數的個數 
  2. mu=[1 -1]
  3. Sigma=[.9,.4;.4,.3]
  4. r=mvnrnd(mu,Sigma,n); 

將產生的隨機數繪制在二維平面

  1. scatter(r(:,1),r(:,2)); 

enter description here

1474457688429.jpg

當然mvnrnd函數還可以產生更高維數的高斯隨機數,具體參見matlab help。


產生多元高斯分布概率密度函數
Y=mvnpdf(X,[MU,Sigma])
其中可省參數MU,Sigma默認值分別為零向量和單位陣,X是的矩陣,N是樣本個數,D是樣本維數。

  1. mu = [1 -1]; Sigma = [.9 .4; .4 .3]
  2. [X1,X2] = meshgrid(linspace(-1,3,25)', linspace(-3,1,25)'); 
  3. X = [X1(:) X2(:)]
  4. p = mvnpdf(X, mu, Sigma); 
  5. surf(X1,X2,reshape(p,25,25)); 

和下面代碼產生的趨勢相同

  1. mu = [1 -1]
  2. Sigma = [.9 .4; .4 .3]
  3. [X,Y] = meshgrid(linspace(-1,3,25)', linspace(-3,1,25)'); 
  4. for i=1:25 
  5. for j=1:25 
  6. XY=[X(i,j),Y(i,j)]
  7. Z(i,j)=exp(-0.5*(XY-mu)/Sigma*(XY-mu)'); 
  8. end 
  9. end 
  10. surf(X,Y,Z); 

enter description here

1474460161935.jpg


高斯分布函數
Y=mvncdf(X,[Mu],[Sigma]) , cumulative probability of the multivariate norm distribution with mean Mu and covariance Sigma.
具體使用看代碼

  1. mu = [1 -1]; Sigma = [.9 .4; .4 .3]
  2. [X1,X2] = meshgrid(linspace(-1,3,25)', linspace(-3,1,25)'); 
  3. X = [X1(:) X2(:)]
  4. p = mvncdf(X, mu, Sigma); 
  5. surf(X1,X2,reshape(p,25,25)); 

enter description here

1474460555428.jpg


高斯隸屬函數
gaussmf(X,[Sigma,Mu])

  1. x = (0:0.1:10)'
  2. y1 = gaussmf(x, [0.5 5]); 
  3. y2 = gaussmf(x, [1 5]); 
  4. y3 = gaussmf(x, [2 5]); 
  5. y4 = gaussmf(x, [3 5]); 
  6. plot(x, [y1 y2 y3 y4]); 

enter description here

1474460751315.jpg


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM