- You need to create 3 3-D arrays for x, y, and z, in the given range -- hint: linspace and meshgrid.
- Then you need to evaluate the function g(x,y,z) at each of those x, y, z locations: V = (X.^2+9*Y.^2/4+Z.^2-1).^3 - X.^2.*Z.^3 (etc)
how can we plot this function as 3d with matlab?
15 ビュー (過去 30 日間)
古いコメントを表示

how can we plot this fucntion as 3d with matlab? I tried surf and ezplot to plot function. but they didnt work. thanks for help.
0 件のコメント
採用された回答
Matt Tearle
2012 年 9 月 12 日
Aww, cute.
The reason you can't use surf or ezplot is that these are not designed for this kind of equation. To use surf you need to have a surface defined as z = f(x,y). You have g(x,y,z) = 0. If you could rearrange that into z = f(x,y), you could use surf, but the equation you have doesn't really allow that.
So... instead, go back to the definition of the surface as g(x,y,z) = 0. Think of this as a particular isosurface of the function g(x,y,z) (with isosurface value of 0).
To make a surface in MATLAB from that kind of setup, you need (surprise, surprise) isosurface. Look in the documentation at the examples for isosurface. They will guide you through the visualization.
The one thing you need that isn't in the isosurface doc is to create the data to plot. (The examples do [x,y,z,v] = flow; which creates the data from a canned routine for a specific example.) So:
Now you have the data, you can plot, using the examples in the isosurface documentation.
You'll "love" the result. Haha. I'm so funny.
6 件のコメント
Sean de Wolski
2012 年 9 月 12 日
@Azzi - no you don't!
isosurface is essentially a three dimensional contour plot. When you set the threshold value to zero, it will draw the isosurface at that interface thus automagically solving the equation for you :)
その他の回答 (3 件)
Azzi Abdelmalek
2012 年 9 月 12 日
編集済み: Azzi Abdelmalek
2012 年 9 月 12 日
sol=[];
for k=-3:0.1:3
for m=-3:0.1:3
x=[k m];
a=x(1)^2+x(2)^2*9/4-1;
v=[1 0 3*a 0 + 3*a^2 0 a^3 ];
z=roots(v);
z=z(imag(z)==0);
n=length(z);
if n>0
xyz=[repmat(x(1:2),n,1) z];
sol=[sol;xyz];
end
end
end
plot3(sol(:,1),sol(:,2),sol(:,3))
murat can
2012 年 9 月 12 日
3 件のコメント
Sean de Wolski
2012 年 9 月 12 日
編集済み: Sean de Wolski
2012 年 9 月 12 日
You don't need to define X,Y,Z,V as syms since they won't be syms but rather double arrays....
Removing that line, it works for me.
参考
カテゴリ
Help Center および File Exchange で Surface and Mesh Plots についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!