如何用matlab画出一个椭球体?

来源:百度知道 编辑:UC知道 时间:2024/09/28 09:10:29
请问如何用matlab画出一个椭球体。
另外,请问有没有办法把matlab里矩阵中复数变为实数(虚部为0的保留实数,虚部不为0的变为实数0)?
非常感谢“化学工程”大哥给出的答案,那两个命令果然能画出椭球体。不过,这里还需要补充一下,请各位大侠相助。
我做椭球的时候用的命令是
x=-3:0.1:3;
y=-2:0.1:2;
[X,Y]=meshgrid(x,y);
z0=sqrt(1-X.*X/9-Y.*Y/4);
surf(X,Y,z0);
软件提示:
??? Error using ==> surf
X, Y, Z, and C cannot be complex.
请问是为什么?这些命令在有些机器上又能运行得好好的,没一点问题,为什么到我机子上就不行了呢 ?
我装的是matlab 7.3.0.267(R2006b)这个版本,能运行的是matlab 7.0 版本。
是不是要做什么设置,使矩阵中的实数就是实数,没有虚部(这些命令运行后z0里的实数在我的电脑上相比都有一个等于0的虚部)呢?

化学工程大哥,为什么我用你给的方法还是得不到椭球体呢?
我是说后两种方法,3和4。
第三种画出来的是两个不完整的半椭球,下面一个还没显示完全,而第四个画出来的更是神奇,只有两个面了。
请解释下。感谢。

补充:
【3】你用这个吧,因为开方使z0成为复数了。
>> ezsurf('sqrt(1-X.*X/9-Y.*Y/4)')
【4】或改变x、y的取值范围:
>> x=-2:0.1:2;
y=-1:0.1:1;
[X,Y]=meshgrid(x,y);
z0=sqrt(1-X.*X/9-Y.*Y/4);
surf(X,Y,z0);

【1】
>>[X,Y,Z]=ELLIPSOID(0,0,0,1,2,3,40);
>> surf(X,Y,Z)

【2】
clear;clc
x=[3+2*i;5];
n=length(x);
xx=zeros(size(x));
for k=1:n
if imag(x(k))==0
xx(k)=real(x(k));
else
xx(k)=0;
end
end
xx

运行结果:
xx =

0
5

有好几种方法可以实现。
方法一:直接调用Matlab代码,如下
[x, y, z] = ellipsoid(0,0,0,5.9,3.25,3.25,30);
surfl(x, y, z)
colormap copper
axis equal
方法二:如果你用到SimMechanics->VR->Solidworks,通常可以通过把Solidworks的文件导入到SimMechanics里来

你的椭圆的方程有问题啊,本来要的是都是正数的,可以你的sqrt()函数里面的两有负值了自然有了复数了。