matlab中各種高斯相關函數
最常見的是產生服從一維標准正態分布的隨機數
- n=100;
- x=randn(1,n)
實現服從任意一維高斯分布的隨機數
- u=10;
- sigma=4;
- x=sigma*randn(1,n)+u
產生服從多元高斯分布的隨機變量函數mvnrnd,[multivarite normal random]
- n=100; %產生隨機數的個數
- mu=[1 -1];
- Sigma=[.9,.4;.4,.3];
- r=mvnrnd(mu,Sigma,n);
將產生的隨機數繪制在二維平面
- scatter(r(:,1),r(:,2));

1474457688429.jpg
當然mvnrnd函數還可以產生更高維數的高斯隨機數,具體參見matlab help。
產生多元高斯分布概率密度函數
Y=mvnpdf(X,[MU,Sigma])
其中可省參數MU,Sigma默認值分別為零向量和單位陣,X是的矩陣,N是樣本個數,D是樣本維數。
- mu = [1 -1]; Sigma = [.9 .4; .4 .3];
- [X1,X2] = meshgrid(linspace(-1,3,25)', linspace(-3,1,25)');
- X = [X1(:) X2(:)];
- p = mvnpdf(X, mu, Sigma);
- surf(X1,X2,reshape(p,25,25));
和下面代碼產生的趨勢相同
- mu = [1 -1];
- Sigma = [.9 .4; .4 .3];
- [X,Y] = meshgrid(linspace(-1,3,25)', linspace(-3,1,25)');
- for i=1:25
- for j=1:25
- XY=[X(i,j),Y(i,j)];
- Z(i,j)=exp(-0.5*(XY-mu)/Sigma*(XY-mu)');
- end
- end
- surf(X,Y,Z);

1474460161935.jpg
高斯分布函數
Y=mvncdf(X,[Mu],[Sigma]) , cumulative probability of the multivariate norm distribution with mean Mu and covariance Sigma.
具體使用看代碼
- mu = [1 -1]; Sigma = [.9 .4; .4 .3];
- [X1,X2] = meshgrid(linspace(-1,3,25)', linspace(-3,1,25)');
- X = [X1(:) X2(:)];
- p = mvncdf(X, mu, Sigma);
- surf(X1,X2,reshape(p,25,25));

1474460555428.jpg
高斯隸屬函數
gaussmf(X,[Sigma,Mu])
- x = (0:0.1:10)';
- y1 = gaussmf(x, [0.5 5]);
- y2 = gaussmf(x, [1 5]);
- y3 = gaussmf(x, [2 5]);
- y4 = gaussmf(x, [3 5]);
- plot(x, [y1 y2 y3 y4]);

1474460751315.jpg