' streamlined '未绘制此向量场



我正在尝试用一个非常简单的3D矢量场测试流线。我使用3个for循环填充网格(不是最好的,但这让人联想到"v"的不同表达式)。我不能轻易地进行矢量化)。然后我定义向量场v为r,简单的径向场。我的完整代码如下。Quiver3很好,但不幸的是流线型给了我以下错误:

使用griddedInterpolant出错插值至少需要两个每个维度的采样点

N = 5;
L = 2;
dl = 2*L/N;
for i = 1:N+1
for j = 1:N+1
for k = 1:N+1

x = -L + (i-1)*dl;
y = -L + (j-1)*dl;
z = -L + (k-1)*dl;

X(i,j,k) = x;
Y(i,j,k) = y;
Z(i,j,k) = z;

r = [x,y,z];

v = r-r0;

Vx(i,j,k) = v(1);
Vy(i,j,k) = v(2);
Vz(i,j,k) = v(3);

end
end
end
quiver3(X,Y,Z,Vx,Vy,Vz);
[sx,sy,sz] = meshgrid(0:0.1:1,0:1:5,0:1:5);
streamline(X,Y,Z,Vx,Vy,Vz,sx,sy,sz);
hold on;
streamslice(X,Y,Z,Vx,Vy,Vz,[],[],5);
pbaspect([1,1,1])

它返回到网格化的X, Y变量,如果你使用XY的转置版本,你将不会得到这个插值错误在流线功能。要在MATLAB中对N-D数组进行转置,使用permute函数,如:

X = permute(X, [2,1,3]);  % to rearrange X and Y dimension

或者只是在第一个地方定义XY的正确形式[在循环中]

相关内容

  • 没有找到相关文章

最新更新