Ich möchte eine Funktion machen, die ein Mesh-Plot machen wird. Start x, y; dx, dy und end x, y werden in eine Funktion eingegeben. Z sollte wie es berechnet werden:Matlab-Mesh-Plot. Spezifische Funktion für z. Z muss eine Matrix sein
if x>y
z =x^2-sin(x);
elseif x==y
z = 3;
else
z = 2*x+2*x;
end
ich diesen Code gemacht haben:
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)
und bekam diese Fehlercodes:
Error using mesh (line 70)
Z must be a matrix, not a scalar or vector.
Error in mes (line 21)
mesh(X,Y,zv)
Gleichung für z scheint zu funktionieren. Ich weiß, dass es viele similare Probleme gibt, wie meins, aber wenn ich eine einfache Gleichung für z aufstelle, funktioniert es, aber nicht mit diesem.
'zv = Umformen (zv, [Länge (x) Länge (y)])'? –
Funktion [] = mes (xp, xk, dx, yp, yk, dy) x = [xp: dx: xk]; y = [yp: dy: yk]; [x, y] = Gittergitter (x, y); zv = []; für i = 1: numel (x) wenn x> y z = x (i)^2-sin (y (i)); anderes x (i) == y (i) z = 3; sonst z = 2 * x (i) + 2 * y (i); Ende zv = [zv z]; Ende zv = reshape (zv, [Länge (x) Länge (y)]) Figur mesh (zv) Ja, Mesh-Plot zeigt, aber es scheint seltsam, nicht 3d zu sein. @ ander-biguri –
Cosnider akzeptiert die Antwort, wenn es geholfen hat –