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=[11]

  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 = [11]; 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 = [11]

  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 = [11]; 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

版权声明:本文为YiXiaoZhou原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/YiXiaoZhou/p/5894030.html