2017-10-25 16 views
-1

私は3次元プロットをしようとしていますが、私はエラーが発生しており、解決方法がわかりません。私はそこに他の質問があると知っていますが、私はそれらのいくつかを試しましたが、うまくいきませんでした。Zは行列でなければなりません。scalaqrやベクトルではなく、matlab

fh = sin(x)*cos(y).^3 + 2*cos(x).^5*sin(y) 

[X,Y] = meshgrid(1:0.5:10,1:20); 

surf(X,Y,fh) 

Error using surf (line 82) 
Z must be a matrix, not a scalar or vector. 
+0

実行可能なコードと、最小限の例を投稿してください。 'x'と' y'は定義されていないので、最初の行はエラーとなります –

+0

@LuisMendo単純な3次元のプロットの例を見て、どこにでもXとYを定義するのを見ていませんでした。私の最初の3Dプロット以来、私は持っているこの機能をプロットすることができるいくつかの助けを探しています。これは私が持っているすべてのコードです。 – AppCodah

答えて

0

この場合Zデータは、あなたがfhとしてsurfに渡しているものです。 fhZの計算に使用する関数ですが、XおよびYのために生成したグリッド値を使用して評価する必要があります。あなたのコードは今では、私たちのために定義していない、xy(大文字小文字は問題ありません)を使って関数を評価しています。代わりにこれを試してみてください:私は.*演算子(element-wise multiplication)の代わりに、式の*オペレータ(matrix multiplication)を使用

[X, Y] = meshgrid(1:0.5:10, 1:20); 
Z = sin(X).*cos(Y).^3 + 2.*cos(X).^5.*sin(Y); 

surf(X, Y, Z); 

注意してください。

また、データの特定のセットのための式を評価しanonymous functionを定義することによってこれを行うことができます:

fh = @(x, y) sin(x).*cos(y).^3 + 2.*cos(x).^5.*sin(y); 
[X, Y] = meshgrid(1:0.5:10, 1:20); 

surf(X, Y, fh(X, Y)); 
関連する問題