Matlab:极坐标问题中的Streamslice

问题描述 投票:0回答:1

我正在努力处理我的代码,这应该在极坐标中创建矢量场的流线。我已将(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。我还尝试计算一些不同的streamlice:

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

这有时适用于其他人(是的,我完成了我的“研究”)......但它给出了相同的错误信息。如果它可以帮助某人,我还附上了这个矢量场的颤动图。如果有人帮助mi解决了这个问题,我将非常感激。真的,我什么都不知道。 enter image description here

matlab field physics streamline
1个回答
0
投票

来自streamslice documentation

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

您的箭头图表示您已经在r和phi坐标的单调网格上定义了矢量场(尽管如果您在问题中指定了一个最小的示例,这将有所帮助,因此您的问题可以准确再现)。

您有两种选择:

  1. 还要计算极坐标中的streamslice并将流线转换为笛卡尔坐标
  2. 使用[x,y] = meshgrid(...)在笛卡尔空间中生成单调网格,将这些坐标转换为极坐标以计算矢量场,并根据代码中看不见的部分将字段属性转换回笛卡尔分量。
© www.soinside.com 2019 - 2024. All rights reserved.