Matlab网格图。z的特定函数。Z必须是一个矩阵

Matlab网格图。z的特定函数。Z必须是一个矩阵,matlab,plot,mesh,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;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的方程式似乎有效。 我知道,对于类似于我的问题,有很多答案,但当我为z建立一个简单的方程时,它是有效的,但这一个不行。

使用矢量化

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);
x=[xp:dx:xk];
y=[yp:dy:yk];
[X,Y]=网格网格(X,Y);
z=零(尺寸(X));
z=2*X+2*Y;
z(X>Y)=X((X>Y)).2-sin(Y((X>Y));

z(X==Y)=3;%小心浮点数!!也许abs(X-Y)
zv=重塑(zv[length(X)length(Y)])
?函数[]=mes(xp,xk,dx,yp,yk,dy)X=[xp:dx:xk];y=[yp:dy:yk];[x,y]=网格网格(x,y);zv=[];对于i=1:numel(x)如果x>yz=x(i)^2-sin(y(i));elseif x(i)==y(i)z=3;否则z=2*x(i)+2*y(i);结束zv=[zv z];结束zv=重塑(zv,[长度(x)长度(y)])图形网格(zv)是的,网格图显示了,但它似乎是wierd,而不是3d@安德·比古里科斯奈德(ander biguriCosnider)接受了答案,如果答案有帮助的话