首页 > 代码库 > matlab中各种高斯相关函数

matlab中各种高斯相关函数

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

技术分享

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

技术分享

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

技术分享

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

技术分享

1474460751315.jpg

matlab中各种高斯相关函数