2013-11-24 8 views
7

mam dwuwymiarowym Gaussa I zdefiniowany następująco:Sporządzić zarys wielowymiarowego zwykłego pliku PDF danej MVN w programie MATLAB?

I=[1 0;0 1]; 
mu=[0,0]; 
sigma=0.5*I; 
beta = mvnrnd(mu,sigma,100); %100x2 matrix where each column vector is a variable. 

Teraz chcę wykreślić kontur pdf powyższej matrycy. Co zrobiłem:

Z = mvnpdf(beta,mu,sigma); %100x1 pdf matrix 

Teraz chcę wykreślić kontur dwuwartościowej bety gaussowskiej. Wiem, że powinienem użyć konturu polecenia, ale ten wymaga Z, aby był kwadratową matrycą. jak mam to rozwiązać? Jestem bardzo zdezorientowany i nie wiem, jak narysować kontur dwusystemowego gaussa !! Każda pomoc jest mile widziana ..

Dziękuję

Odpowiedz

14

Trzeba zdefiniować x, y osie i używać meshgrid (lub ndgrid), aby wygenerować wszystkie kombinacje Wartości x, y, w postaci dwóch matryc X i Y. Następnie obliczyć wartości Z (Twój Gaussa pdf) Dla X i Y i działki Z jako funkcję X, Y pomocą contour (Contour powierzchni), czy może surf (3D działka).

mu = [0,0]; %// data 
sigma = [.5 0; 0 .5]; %// data 
x = -5:.1:5; %// x axis 
y = -4:.1:4; %// y axis 

[X Y] = meshgrid(x,y); %// all combinations of x, y 
Z = mvnpdf([X(:) Y(:)],mu,sigma); %// compute Gaussian pdf 
Z = reshape(Z,size(X)); %// put into same size as X, Y 
%// contour(X,Y,Z), axis equal %// contour plot; set same scale for x and y... 
surf(X,Y,Z) %// ... or 3D plot 

Graph obtained with <code>contour(X,Y,Z), axis equal</code> Graph obtained with <code>surf(X,Y,Z)</code>

+1

Dziękuję bardzo działało idealnie – Evan

+1

ten kod działa również doskonale w oktawie, pod warunkiem, że opakowanie statystyka jest ładowany 'pkg obciążenie statistics' :) –

Powiązane problemy