【问题标题】:Matlab:Streamslice in polar coordinates problemMatlab:极坐标中的Streamslice问题
【发布时间】:2019-03-10 10:36:46
【问题描述】:

我正在努力编写我的代码,它应该在极坐标中创建矢量场的流线。我已将 (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')

这有时对其他人有用(是的,我已经完成了我的“研究”)......但它给出了相同的错误消息。 如果它可以帮助某人,我还会附上这个向量场的颤动图。如果有人帮助我解决这个问题,我将非常感激。真的,我没有任何想法。 enter image description here

【问题讨论】:

    标签: matlab field physics streamline


    【解决方案1】:

    来自streamslice documentation

    定义UV 坐标的数组XY 必须是单调的,但不需要等间距。 XY 必须具有相同数量的元素,就像由 meshgrid 生成一样。

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

    你有两个选择:

    1. 同样计算极坐标中的streamslice,并将流线转换为笛卡尔坐标
    2. 使用[x,y] = meshgrid(...) 在笛卡尔空间中生成单调网格,将这些坐标转换为极坐标以计算矢量场并将场属性转换回笛卡尔分量,如下所示根据您的代码中看不见的部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-07
      • 1970-01-01
      • 2015-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多