ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

ezsurf

(非推奨) 簡単な 3 次元カラー表面プロット

ezsurf は推奨されません。代わりに fsurf を使用してください。

構文

ezsurf(fun)
ezsurf(fun,domain)
ezsurf(funx,funy,funz)
ezsurf(funx,funy,funz,[smin,smax,tmin,tmax])
ezsurf(funx,funy,funz,[min,max])
ezsurf(...,n)
ezsurf(...,'circ')
ezsurf(axes_handle,...)
h = ezsurf(...)

説明

ezsurf(fun) は、関数 surf を使用して、fun(x,y) のグラフを作成します。fun は、既定の領域 -2π < x < 2π, -2π < y < 2π でプロットされます。

fun には、関数ハンドル、文字ベクトルまたは string を指定できます (ヒントの節を参照)。

ezsurf(fun,domain) は、指定した domain に関数 fun をプロットします。domain はベクトルでなければなりません。ベクトル入力と軸の出力の制限の詳細は、アルゴリズムの節を参照してください。

ezsurf(funx,funy,funz) は、パラメトリックな表面 funx(s,t)funy(s,t) および funz(s,t) を -2π < s < 2π、-2π < t < 2π の正方形上でプロットします。

関数 ezsurf(funx,funy,funz,[smin,smax,tmin,tmax]) または ezsurf(funx,funy,funz,[min,max]) は、指定された領域を使用してパラメトリックな表面をプロットします。

ezsurf(...,n) は、nn 列のグリッドを使用して、既定の領域で関数 fun をプロットします。n の既定値は 60 です。

ezsurf(...,'circ') は、領域内の中心に配置された円盤上に関数 fun をプロットします。

ezsurf(axes_handle,...) は、現在の座標軸 (gca) の代わりにハンドル axes_handle をもつ座標軸にプロットします。

h = ezsurf(...) は、surface オブジェクトのハンドルを h に返します。

すべて折りたたむ

関数 f(x,y)=real(atan(x+iy)) を領域 -2π<x<2π および -2π<y<2π でプロットします。関数 ezsurf は数学関数が定義されない点をプロットしません。これらの点はプロットされないように NaN に設定されます。

figure
ezsurf('real(atan(x+i*y))')

surf を使用して、不連続点をフィルター処理せずに同じデータをプロットします。

figure
[x,y] = meshgrid(linspace(-2*pi,2*pi,60));
z = real(atan(x+1i.*y));
surf(x,y,z)

ヒント

関数 ezsurf および関数 ezsurfc は複素数入力を受け入れません。

関数を文字ベクトルまたは string として渡す

関数 ezsurf に渡す式には、常に配列の乗算、除算およびべき乗が暗黙的に指定されています。たとえば、以下の式の表面プロットに対する MATLAB® 構文は、

sqrt(x.^2 + y.^2);

以下のように記述されます。

ezsurf('sqrt(x^2 + y^2)')

つまり、ezsurf に渡す文字ベクトルまたは string 内の x^2x.^2 として解釈されます。

プロットする関数が、変数 u および v (x および y ではありません) の関数の場合、領域の端点 uminumaxvmin および vmax は、アルファベット順に並べ替えられます。そのため、ezsurf('u^2 - v^3',[0,1],[3,6]) は、領域 0 < u < 1、3 < v < 6 で、u2 - v3 をプロットします。

関数ハンドルを渡す

関数ハンドル引数は、MATLAB 構文を使用する関数を示さなければなりません。たとえば、以下のステートメントは、無名関数を示し、関数ハンドル fh を関数 ezsurf に渡します。

fh = @(x,y) sqrt(x.^2 + y.^2);
ezsurf(fh)

関数ハンドルを使用する場合は、配列べき乗、配列乗算および配列除算の各演算子 (.^, .*, ./) を使用しなければなりません。これは、文字ベクトルまたは string の入力の場合とは異なり、ezsurf が構文を変更しないためです。

追加引数を渡す

関数で、たとえば、myfunk などの追加パラメーターが使用される場合、

function z = myfun(x,y,k1,k2,k3)
z = x.*(y.^k1)./(x.^k2 + y.^k3);

無名関数を使用して、パラメーターを指定することができます。

ezsurf(@(x,y)myfun(x,y,2,2,4))

アルゴリズム

関数 ezsurf は、領域の入力方法に応じて、異なる方法で x 軸と y 軸の範囲を指定します (領域の入力方法が異なる場合)。次の表で、R はベクトル [xmin, xmax, ymin, ymax] で、v は手動で入力された領域ベクトルです。

指定された領域値の数生成された領域ベクトル
v = [ ];
R = [-2*pi, 2*pi, -2*pi, 2*pi];
v = [ v(1) ];
R = double([-abs(v),abs(v),-abs(v),abs(v)]);
v = [ v(1) v(2) ];
R = double([v(1),v(2),v(1),v(2)]);
v = [ v(1) v(2) v(3) ];
R = double([-v(1),v(2),-abs(v(3)),abs(v(3))]);
v = [ v(1) v(2) v(3) v(4) ];
R = double(v);
v = [ v(1)..v(n) ]; n>4
R = double([-abs(v(1)), abs(v(1)), -abs(v(1)), abs(v(1))]);

非ベクトル形式 (大かっこ ([ ]) を使用しない形式) で単一の数値を指定すると、関数 ezsurf は、この数値を軸の max 値と min 値間で求められる点数、n と解釈します。

既定の設定では、関数 ezsurf は、軸の max 値と min 値間で 60 個の点を使用します。min 値と max 値が既定値 (R = [-2*pi, 2*pi, -2*pi, 2*pi];) の場合、関数 ezsurf は、必ずこの 60 個の点を指定した式の非複素数の範囲内にします。たとえば、1x2y2 は、x2y21 の場合にのみ実数になります。この関数の既定のグラフは、以下のような形になります。

ezsurf('sqrt(1-x^2-y^2)')

1x2y2 が実数値をとる点は、最小値と最大値の間に 60 個あることがわかります。ただし、領域値を既定値 (R = [-2*pi, 2*pi, -2*pi, 2*pi];) と同じに指定すると、異なる結果が表示されます。

ezsurf('sqrt(1-x^2-y^2)',[-2*pi 2*pi])

この場合、グラフの制限値は同じですが、関数 ezsurf では、すべての点に実数が含まれていることを確認せずに、ユーザー定義の制限値間で 60 個の点を使用しています。

拡張機能

参考

| | | | |

トピック

R2006a より前に導入