Surf function problem
13 views (last 30 days)
Show older comments
I have a problem drawing a surface for a regression.
I have 3 vectors Y, X1, X2 and I have estimated the multiple linear regression: Y = c + a*X1 + b*X2 + u
I would like to draw the graph of this regression: Y = c + a*X1 + b*X2 + u using a MATLAB plot-graph.
I have tried the 'surf' function but I get this error 'Matrix dimensions must agree'.
I have done these things so far.
- Estimate the coefficients (c,a,b).
- Make a new serie [f=Y(estimated)], using the estimated coefficients (c,a,b). New serie: f = c + a*X1 + b*X2
- Use the 'surf' function. surf(X1,X2,f)
Can someone help me? I can’t understand what I am doing wrong.
PS: I use MATLAB 6.5*
0 Comments
Accepted Answer
Sean de Wolski
on 26 Jan 2011
You'll have to use
meshgrid
to generate your index matrices.
[X1 X2] = meshgrid(1:50);
c = pi;
a = 2;
b = -3;
f = c+a*X1+b*X2;
surf(X1,X2,f)
-Sean
0 Comments
More Answers (6)
Sean de Wolski
on 26 Jan 2011
I.e. the known Y-values that you used for your regression? How about:
scatter3
or
plot3
to overlay them on your surface?
0 Comments
strat
on 26 Jan 2011
1 Comment
Sean de Wolski
on 26 Jan 2011
So you overwrote the original X1,X2 with the meshgrid X1,X2?
The call to scatter3 should be with the _original_ X1,X2 used for your regression and Y
scatter3(X1orig,X2orig,Y)
See Also
Categories
Find more on Linear and Nonlinear Regression 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!