我想使用命令 quiver3(X,Y,Z,M,N,O) 来获得一个向量场,其中所有矩阵都是具有真实条目的 10x10x10 数组。现在我想绘制它并且只得到 4 个向量而不是我预期的 1000 个。这里有人知道,我可能做错了什么吗?如果您需要更多信息,我可以为您提供意见。
user2649077
问问题
890 次
1 回答
3
假设在尝试显示数据时出现问题(而不是尝试显示不允许的数值,例如Inf
or NaN
),我认为问题在于向量的范数范围,因此只有 4 个出现。
向量范数相对于坐标系范围的重要性很重要,如下例所示:
这里显示了所有 10 个随机向量:
Na = 10;
[X Y Z M N O] = deal(rand(Na,1),rand(Na,1),rand(Na,1),rand(Na,1),rand(Na,1),rand(Na,1));
quiver3(X,Y,Z,M,N,O)
但是,如果将某些向量放大 100 倍,则只会显示较小的向量:
mul = 1e+3;
[X Y Z M N O] = deal(rand(Na,1),rand(Na,1),rand(Na,1),...
[mul*rand(Na/2,1);rand(Na/2,1)],...
[mul*rand(Na/2,1);rand(Na/2,1)],...
[mul*rand(Na/2,1);rand(Na/2,1)]);
quiver3(X,Y,Z,M,N,O)
同样,如果某些向量太小,它们就不会出现:
mul = 1e-3;
[X Y Z M N O] = deal(rand(Na,1),rand(Na,1),rand(Na,1),...
[mul*rand(Na/2,1);rand(Na/2,1)],...
[mul*rand(Na/2,1);rand(Na/2,1)],...
[mul*rand(Na/2,1);rand(Na/2,1)]);
quiver3(X,Y,Z,M,N,O)
相对于轴太大或太小的矢量根本不会显示。
如果缩放有问题,您可能需要检查您的函数并查看如何缩小 x、y、z 的范围,以便向量具有更窄的值范围,或者更改比例(对数?),以便所有数据可以在一张图中显示。
编辑
作为如何显示数据问题的替代方案,您可能需要考虑使用isosurfaces
. 这是一个示例,每个红色球体代表球形势中的不同等值面:
于 2013-08-08T12:53:53.377 回答