2016-03-18 26 views
0

olmalıdır Bir işlev yapmak istiyorum, bir örgü arsa yapıyor olacak. başlangıç ​​x, y; dx, dy ve end x, y bir fonksiyona girilecektir. Bu kodu yaptıkMatlab mesh grafiği. Z için özel işlev. Z bir matris

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

: Z orada gibi hesaplanmalıdır

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) 

ve bu hata kodları var:

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

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

Denklem z için çalışmak gibi görünüyor. Biliyorum ki, simil problemlerinin benimki gibi birçok cevabı var, ama z için basit bir denklem oluşturduğumda işe yarıyor ama bununla değil.

+0

'zv = reshape (zv, [uzunluk (x) uzunluk (y)])'? –

+0

işlevi [] = mes (xp, xk, dx, yp, yk, dy) x = [xp: dx: xk]; y = [yp: dy: yk]; [x, y] = meshgrid (x, y); zv = []; I = 1: nümerik (x) için x> y z = x (i)^2-sin (y (i)); elseif x (i) == y (i) z = 3; başka z = 2 * x (i) + 2 * y (i); end zv = [zv z]; uç zv = yeniden şekillendirme (zv [uzunluk (x) uzunluğu (y)]) Şekil ağ (ZV) Evet, örgü arsa gösterir, ancak garip, 3d değil bir görünmektedir. @ ander-biguri –

+0

Eğer yardım ederse cevabı kabul eden Cosnider –

cevap

0

Vectorization kullanın!

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);