Error using .* Matrix dimensions must agree.
2 views (last 30 days)
Show older comments
Hello, I'm trying to build the probability density function (2D) with Matlab. The formula is on the picture below. and then visualize it in 3D.
I'm getting an Error by implementing this function bei Z= .... I'm new in Matlab and need your help
function P=plot_cov(s1,s2,c)
P=[s1^2 s1*s2*c;c*s1*s2 s2^2];
Pinv = inv(P);
x= linspace(-1.6*max(s1,s2), 1.6*max(s1,s2),41);
y= linspace(-1.6*max(s1,s2), 1.6*max(s1,s2),41);
[X,Y]= meshgrid(x,y);
n=2;
Z= 1/((2*3.41)^(n/2)*sqrt(det(P)))*exp((-1/2)*x'.*Pinv.*x) ;
%Graphic
mesh(X,Y,Z);
%surf(X,Y,Z);
%contour(X,Y,Z);
%surf(X,Y,Z,'FaceColor','interp',...
%'EdgeColor','none',...
%'FaceLighting','phong');
xlabel('X');
ylabel('Y');
title('PDF Gauss');
set(gcf,'Name','Gauss ','NumberTitle','off'); end
2 Comments
Image Analyst
on 17 May 2015
What is the error? Copy all the red text and paste it back here. Also show how your main program is calling plot_cov() - like what argument values it's passing to it.
Answers (2)
Jan
on 17 May 2015
Edited: Jan
on 17 May 2015
You do not need the elementwise multiplication .* but the matrix multiplication *
Z = 1/((2*pi)^(n/2) * sqrt(det(P))) * exp((-1/2) * x' * Pinv * x);
Note: pi is not 3.41 ! Even 3.14 would be a too rough simplification.
4 Comments
Jan
on 17 May 2015
@corny: According to the small snippet of the original question x is a vector. We cannot see the complete question and do not have a chance to guess, what you are wanting to achieve. When you post one code and the error message produced by other code, the confusion is perfect.
Walter Roberson
on 17 May 2015
Your X is 1 x 41. Your Pinv is 2 x 2. What are you expecting Pinv * x to mean?
I suspect this is what you want:
x= linspace(-1.6*max(s1,s2), 1.6*max(s1,s2),41);
y= linspace(-1.6*max(s1,s2), 1.6*max(s1,s2),41);
[X,Y]= meshgrid(x,y);
Xv = X(:);
Yv = Y(:);
XY = [Xv, Yv];
Now XY is (41*41) by 2 and you can do
XY * Pinv * XY'
0 Comments
See Also
Categories
Find more on Descriptive Statistics in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!