matlab中mesh函数的问题

来源:百度知道 编辑:UC知道 时间:2024/07/02 20:40:09
mesh(X,Y,Z)中,X和Y,Z都是10*10的矩阵,但是程序运行时出错.说错在mesh函数文件的第69行.谁能帮我看看错在哪了?
另外,X和Y采用如下方法生成:x=1:10;y=1:10;y=y';X=ones(size(y))*x;Y=y*ones(size(x));没有用meshgrid函数.不知道有没有影响.因为不能生成矩形的格点区域,所以没法用meshgrid.
我的X和Y需要形成的是三角形的区域,而meshgrid只能形成矩形区域,所以没法用meshgrid。
Z是10*10的矩阵。维数对着啊。是哪里不对呢?
我把程序贴出来吧。谁帮我看看哪错了。
zz=eps:10/99:10;
yy=(0:10/99:10)';
Z=ones(size(yy))*zz;
Y=yy*ones(size(zz));
X=zeros(100,100);
X2=zeros(100,100);
i=1;
for z=0:10/99:10,
j=1;
for y=0:10/99:10,
if (y<=z),
X(i,j)=sqrt((y^2)/(z^2)-z^2);
X2(i,j)=-sqrt((y^2)/(z^2)-z^2);
end
j=j+1;
end
i=i+1;
end
mesh(Z,Y,X);
hold on
mesh(Z,Y,X2);

X,Y没错啊,和meshgrid生成的一样。
看看是不是Z的问题。
你给的信息太少,判断不出哪儿的问题。
另外,meshgrid可以生成矩形区域的啊,谁告诉你不行了?

是这两行出错了
X(i,j)=sqrt((y^2)/(z^2)-z^2);
X2(i,j)=-sqrt((y^2)/(z^2)-z^2);
sqrt()括号里出现负数了,所以算出的X和X2有一部分是复数了,所以画不出图了

X(i,j)=sqrt((y^2)/(z^2)-z^2);
X2(i,j)=-sqrt((y^2)/(z^2)-z^2);
这两句有问题,(y^2)/(z^2)-z^2是小于0的数,开方就是复数,mesh就画不出来了.所以改成:
X(i,j)=sqrt(abs((y^2)/(z^2)-z^2));
X2(i,j)=-sqrt(abs((y^2)/(z^2)-z^2));

亲 y=y' 为什么会有这个?这个是什么意思?