HELP needed! (Error using surf, Z must be a matrix, not a scalar or vector)
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Hi guys,
I'm quite new to matlab and I'm required to plot this paraboloid graph. I have spend hours trying to solve but no result. Don't think it's a matter of cap's as well.
A= 1./1500;
X_r2 = 1;
Z_r2 = 0;
x = -10:.1:10;
y = -10:.1:10;
[X,Y] = meshgrid(x,y);
syms A X Y Z X_r2 Z_r2
Temp_Z = solve(sqrt((X-X_r2).^2 + Y.^2 + (Z-Z_r2).^2) - sqrt(X.^2 + Y.^2 + Z.^2) - A == 0 , Z );
Z = Temp_Z;
surf(X,Y,Z)
Please help!
4 comentarios
Thomas
el 4 de Oct. de 2013
You are overwriting your meshgrid matrices with symbolic vars
syms A X Y Z X_r2 Z_r2
...?
Respuestas (3)
cr
el 5 de Oct. de 2013
Whoa, I think thats not quite what you want to do. What is the eqn you want to plot? If i'm plotting the eqn z = sin(sqrt(x^2+y^2))/sqrt(x^2+y^2), this is what I do:
a = -10:.1:10;
b=a;
[x,y] = meshgrid(a,b);
z = sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2);
surf(x,y,z)
cr
el 7 de Oct. de 2013
ok, that clarifies that you need to use solve. if solve function is giving you a closed form solution for your eqn, use subs to substitute for various values of x & y inside two loops. Or better, manipulate the result you get to vectorize it so that you can use meshgrid matrices. Then comes surf.
0 comentarios
Walter Roberson
el 7 de Oct. de 2013
After you solve(), use matlabFunction() to convert the symbolic form to an anonymous function. You can then apply that to the meshgrid matrices.
There are going to be at least two solutions for each point. You need to select one of them or separate out the two parts before doing the matlabFunction()
0 comentarios
Ver también
Categorías
Más información sobre Calculus en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!