MATLAB:极性坐标问题中的溪流



我正在为我的代码而苦苦挣扎,这应该在极坐标中创建矢量字段的流线。我已将(R,Phi)的组件转换为正常的笛卡尔坐标(x,y)。根据(r,phi)均匀分布组件,这意味着r = 0:const:10,phi = 0:const: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')

有时对他人有用的

(是的,我已经完成了"研究")...但是它传达了相同的错误消息。如果可以帮助某人,我还将该矢量字段的Quiver图包含。如果有人帮助MI解决了这个问题,我将非常感谢。真的,我不知道。在此处输入图像描述

来自streamslice文档:

定义UV的坐标的数组XY必须是单调的,但不需要均匀间隔。XY必须具有相同数量的元素,就好像由meshgrid

您的Quiver图表明您已经在R和PHI坐标的单调网格上定义了矢量字段(尽管如果您指定了问题中的最小示例,可以准确地重现问题)。

)。 )。

您有两个选择:

  1. 还计算极坐标中的streamslice,然后将流线转换为笛卡尔坐标
  2. 使用[x,y] = meshgrid(...)在笛卡尔空间中生成A 单调网格,转换为这些坐标为极坐标,以计算矢量场并根据the vector场,并根据该场属性将场属性转换为笛卡尔组件,以恢复笛卡尔组件。未见代码的一部分。

最新更新