2

次のスクリプトがあるとします。

u = -5:.2:5;
[X,Y] = meshgrid(u, u);
Z = cos(X).*cos(Y).*exp(-sqrt(X.^2 + Y.^2)/4);
surf(X,Y,Z);

とにかく、MatLab でサーフェスの一部のみをプ​​ロットできるようにすることはできますか? たとえば、1 つの点または 1 つのグリッドをプロットしたいだけだとします。どうすればよいでしょうか? おそらく、使用できる単一のポイントをプロットすることを考えました。

surf(X(1,1), Y(1,1), Z(1,1))

しかし、その後、エラーメッセージが表示されます:

??? Error using ==> surf at 78
Data dimensions must agree.

ここでいくつかの入力/ヘルプをいただければ幸いです。前もって感謝します :)

4

2 に答える 2

6

あなたが試したことを試してみると、次のことがわかります。

surf(X(1,1),Y(1,1),Z(1,1))
surf の使用エラー (75 行目) Z は、スカラーやベクトルではなく、行列でなければなりません。

したがって、問題は、 を使用して点または線だけを実行できないことですsurf。別の関数を使用する必要があります。ただし、サブリージョンを選択できます

>> ii=1:5;
>> jj=1:20;
>> surf(X(ii,jj),Y(ii,jj),Z(ii,jj))

これを行う別の方法は、NaN をマスクとして使用することです。

>> mask = ones(size(X));
>> mask(1:20, 20:end) = nan;
>> surf(X.*mask, Y.*mask, Z.*mask)

これにより、NAN が存在する部分が表示されなくなります。

于 2012-06-01T19:54:58.500 に答える
1

1 つの点のみを表示するには、点群用に設計された関数 scatter3 が適している場合があります。

scatter3(X(1,1), Y(1,1), Z(1,1))

もちろん、X、Y、Z 点のベクトルでも機能します。各ポイントのポイント サイズと色を直接指定することもできます。

于 2012-06-01T20:10:53.960 に答える