Multivariate Guassian Distribution
I want to learn Multivariate Gussian distribution so I written the following code.*I am implementing following formula
Iam expecting this type of plot
Where I am doing mistake?
clear all
clc% Taking two guassian random variables
x=randn(1000,1);
y=randn(1000,1);X=[x y];
X=X';
d=size(X,1);% find means of x,y
mx=mean(x);
my=mean(y);mumat=[mx my]';
mumat=repmat(mumat,1,size(X,2));Dif_mat=X-mumat;
% The above step (Dif_mat) is (X-mu) in the formulacov_mat=cov(X'); % covariance matrix
det_cv=det(cov_mat); % det of cov matrix
inv_cov=inv(cov_mat); % inverse of cov matrix% scale term before exp in forumala
scale=((2*pi)^(d/2))*sqrt((abs(det_cv)));
scale=inv(scale);% Mahabolis distance in formula
MB=Dif_mat'*cov_mat*Dif_mat;% find the final probability
p=scale*exp((-1/2)*MB);surf(x,y,p)
NOTE:-
Matlabsolutions.com provide latest MatLab Homework Help,MatLab Assignment Help for students, engineers and researchers in Multiple Branches like ECE, EEE, CSE, Mechanical, Civil with 100% output.Matlab Code for B.E, B.Tech,M.E,M.Tech, Ph.D. Scholars with 100% privacy guaranteed. Get MATLAB projects with source code for your learning and research.
You’re really trying to do two things here. The first is, you have some random data and you want to fit it to a multivariate normal distribution. Your approach to this part works, although it can be streamlined:
n = 1000; d=2;
X = randn(n,2);
Get mean and covariance:
mumat=mean(X);
cov_mat=cov(X);
The second part is plotting the resulting distribution. Here you need a regular grid for your variables, not the random values you generated above:
x = -3:.2:3; y = -3:.2:3;
[X,Y] = meshgrid(x,y);
X = X-mumat(1); Y = Y-mumat(2);
Combine X and Y in a way that each row represents one 2D variable.
Z = [X(:) Y(:)];
Now calculate the probabilities.
SEE COMPLETE ANSWER CLICK THE LINK