我正在为我的代码而苦苦挣扎,这应该在极坐标中创建矢量字段的流线。我已将(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
文档:
定义
U
和V
的坐标的数组X
和Y
必须是单调的,但不需要均匀间隔。X
和Y
必须具有相同数量的元素,就好像由meshgrid
。
您的Quiver图表明您已经在R和PHI坐标的单调网格上定义了矢量字段(尽管如果您指定了问题中的最小示例,可以准确地重现问题)。
)。 )。您有两个选择:
- 还计算极坐标中的
streamslice
,然后将流线转换为笛卡尔坐标 - 使用
[x,y] = meshgrid(...)
在笛卡尔空间中生成A 单调网格,转换为这些坐标为极坐标,以计算矢量场并根据the vector场,并根据该场属性将场属性转换为笛卡尔组件,以恢复笛卡尔组件。未见代码的一部分。