0

極座標でベクトル場の流線を作成するコードに苦労しています。(r, phi) コンポーネントを通常のデカルト座標 (x,y) に変換しました。(r, phi) に関するコンポーネントは一様に分布していました。これは、r = 0:const:10、phi = 0:const:2*pi を意味します。現在、streamslice(x,y,wx,wy) を使用してこのベクトル フィールドの流線を計算しようとしていますが、エラーが発生します。

    streamslice(x,y,Gradx,Grady)
Error using griddedInterpolant
Interpolation requires at least two sample points in each
dimension.
Error in interp1 (line 151)
        F = griddedInterpolant(X,V,method);
Error in stream2 (line 62)
    sxi=interp1(xx(:),1:szu(2),sx(k));
Error in streamslice>nicestreams (line 313)
            vertsf = stream2(x,y, u,
            v,xstart,ystart,streamoptions);
Error in streamslice (line 138)
        [vertsout, avertsout] =
        nicestreams(x,y,u,v,density,arrows);

詳しく説明すると、ストリームライン関数内の各マトリックスのサイズは 201x73 です。また、少し異なるストリームスライスを計算しようとしました:

streamslice(x',y',Gradx',Grady')

他の人のために時々機能しました(はい、私は「調査」を行いました)...しかし、同じエラーメッセージが表示されます。また、このベクトル場の矢筒プロットも同封します。誰かがこの問題で私を助けてくれたなら、私は本当に感謝しています. 本当に、私にはわかりません。 ここに画像の説明を入力

4

1 に答える 1

0

streamsliceドキュメントから:

およびの座標を定義する配列Xおよびは単調でなければなりませんが、等間隔である必要はありません。によって生成されたかのように、同じ数の要素を持たなければなりません。YUVXYmeshgrid

あなたの矢筒プロットは、r と phi 座標の単調グリッドでベクトル場を定義したことを示唆しています (ただし、問題を正確に再現できるように、質問で最小限の例を指定すると役立ちます)。

次の 2 つのオプションがあります。

  1. また、極座標で計算しstreamslice、流線をデカルト座標に変換します
  2. を使用してデカルト空間で単調グリッドを生成し、これらの[x,y] = meshgrid(...)座標を極座標に変換してベクトル フィールドを計算し、フィールド プロパティをコードの見えない部分に従ってデカルト コンポーネントに変換します。
于 2019-03-11T09:45:37.510 に答える