2016-03-18 11 views
0

私はメッシュプロットを作成する関数を作りたいと思います。 start x、y; dx、dy、end x、yは関数に入力されます。私はこのコードを作ったMatlabメッシュプロット。 zのための特定の関数。 Zは行列でなければなりません

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

: Zはそこのように計算する必要があります

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の簡単な方程式を作ったときにはうまくいきますが、この方程式では動作しません。

+0

'zv = reshape(zv、[length(x)length(y)])'? –

+0

function [] = mes(xp、xk、dx、yp、yk、dy) x = [xp:dx:xk]; y = [yp:dy:yk]; [x、y] = meshgrid(x、y); zv = []; for i = 1:numel(x) if x> y z = x(i)^ 2-sin(y(i)); (i)== y(i) z = 3; else z = 2 * x(i)+ 2 * y(i); end zv = [zv z]; 端 ZV =変形(ZV、[長さ(x)の長さ(Y)]) 図 メッシュ(ZV) いや、メッシュプロットが現れ、奇妙、3Dない一つであると思われます。 @ ander-biguri –

+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); 
関連する問題