Matlab网格图。 z的具体功能。 Z必须是矩阵

时间:2016-03-18 21:32:21

标签: matlab plot mesh

我想制作一个函数,它将制作一个网格图。 开始x,y; dx,dy和end x,y将被输入到函数中。 Z应该像那样计算:

if x>y
     z =x^2-sin(x);
elseif x==y
     z = 3;
else
     z = 2*x+2*x;
end

我已经制作了这段代码:

function []= mes(xp,xk,dx,yp,yk,dy)
x=[xp:dx:xk];
y=[yp:dy:yk];
zv=[];

for i=1:numel(x)
        if x>y
            z=x(i)^2-sin(y(i));
        elseif x(i)==y(i)
            z=3;
        else
            z=2*x(i)+2*y(i);    
        end
    zv=[zv z];
end
[X,Y]=meshgrid(x,y);
figure
x
y
zv
mesh(X,Y,zv)

并得到以下错误代码:

Error using mesh (line 70)
Z must be a matrix, not a scalar or vector.

Error in mes (line 21)
mesh(X,Y,zv)

z的等式似乎有效。 我知道,像我这样对simillar问题有很多答案,但是当我为z做一个简单的等式时它起作用,但不是用这个。

1 个答案:

答案 0 :(得分:0)

使用矢量化!

x=[xp:dx:xk];
y=[yp:dy:yk];
[X,Y]=meshgrid(x,y);

z=zeros(size(X));

z=2*X+2*Y; 
z(X>Y)=X((X>Y)).^2-sin(Y((X>Y)));
z(X==Y)=3; % Careful with floating points!! maybe abs(X-Y)<0.00001 ?

mesh(X,Y,Z);