matlab - Matlab:极坐标中的Streamslice问题
问题描述
我正在为我的代码苦苦挣扎,它应该在极坐标中创建矢量场的流线。我已将 (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')
有时对其他人有用(是的,我已经完成了我的“研究”)......但它给出了相同的错误消息。如果它可以帮助某人,我还会附上这个向量场的颤抖图。如果有人帮助我解决这个问题,我将非常感激。真的,我没有任何想法。 在此处输入图像描述
解决方案
定义 和 坐标的数组
X
和必须是单调的,但不需要均匀分布。并且必须具有相同数量的元素,就好像由.Y
U
V
X
Y
meshgrid
您的箭袋图表明您已经在 r 和 phi 坐标的单调网格上定义了矢量场(尽管如果您在问题中指定了一个最小示例,这样您的问题就可以准确地重现,这会有所帮助)。
你有两个选择:
- 还计算
streamslice
极坐标并将流线转换为笛卡尔坐标 - 使用生成笛卡尔空间中的单调网格
[x,y] = meshgrid(...)
,将这些坐标转换为极坐标以计算矢量场,并将场属性转换回笛卡尔分量,根据代码中未看到的部分。
推荐阅读
- python - 如何在数据框中使用带有多个变量的 fsolve
- spring-boot - 如何使用 Spring Actuator 配置 Kubernetes 启动探针
- c# - Asp.net 4.5 自定义属性网络表单
- javascript - 谷歌地图“Places API”
- javascript - 检查是否至少填写了一项输入 - 返回自定义有效性
- java - KsqlClientException:收到来自服务器的 401 响应:未经授权。错误代码:40100
- python - 如何使用 Watson Speech to Text api 解决错误 400
- office365 - OfficeRuntime.auth.getAccessToken() 在 Outlook Chrome Incognito 和 Safari 中不起作用
- javascript - 显示一个值并使用 HTML 将另一个值发送到后端
- javascript - 在浏览器控制台中使用 Angular 11 时如何调用“whenStable/isStable”方法?