Multivariate Gaussian user defined function
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
BBB
el 8 de Nov. de 2019
Comentada: BBB
el 8 de Nov. de 2019
Hi
I want to create a hard coded multivariate gaussian function. I know there is an already existing matab function but I need to create another function for my project.
The Multivariate Gaussian Distribution equation given is as follows:
The function has to give a final plot of the gaussian bump using the imagesc in 2D.
%% Some code that I have already tried
function [z] = mygaussian2Dplot(X,mu,sigma)
e = 2.17;
L = X(1);
Y = X(2);
sigma_l = sigma(1).*L;
sigma_y = sigma(2).*Y;
z = 1/2.*sigma_l.*sigma_y.*pi*e.*(-L.^2/2.*sigma_l.^2 - Y.^2/2.*sigma_y.^2);
figure
imagesc(z)
title('Multivariate Gaussian Distribution')
xlabel('x')
ylabel('f(x)')
end
1 comentario
the cyclist
el 8 de Nov. de 2019
Note that e is closer to 2.71, not 2.17.
You could also have used exp(1) there, for an even closer approximation.
Your code simply multiplied by e in your expression, rather than raising e to the desired power in the gaussian formula. That is another thing I fixed in my solution.
Respuesta aceptada
the cyclist
el 8 de Nov. de 2019
Editada: the cyclist
el 8 de Nov. de 2019
I made a few changes:
- Define L as the first column of X, not just first value
- Ditto Y for second column
- Changed a couple matrix operations to elementwise operations, in the definition of z
L = X(:,1);
Y = X(:,2);
sigma_l = sigma(1).*L;
sigma_y = sigma(2).*Y;
z = 1/2.*sigma_l.*sigma_y.*pi.*exp(-L.^2./2.*sigma_l.^2 - Y.^2./2.*sigma_y.^2);
figure
imagesc(z)
title('Multivariate Gaussian Distribution')
xlabel('x')
ylabel('f(x)')
3 comentarios
the cyclist
el 8 de Nov. de 2019
L = X(:,1);
Y = X(:,2);
sigma_l = sigma(1).*L;
sigma_y = sigma(2).*Y;
[LL,YY] = ndgrid(L,Y);
z = 1/2.*sigma_l.*sigma_y.*pi.*exp(-LL.^2./2.*sigma_l.^2 - YY.^2./2.*sigma_y.^2);
Más respuestas (0)
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!