我想使用命令quiver3(X,Y,Z,M,N,O) 为了得到一个矢量场,其中所有矩阵都是10x10x10阵列,带有实数。现在我想绘制它并且只得到4个向量而不是我预期的1000个。这里有人知道,我可能做错了吗? 如果您需要更多信息,我可以提供您的意见。
答案 0 :(得分:3)
假设在尝试显示数据时出现问题(而不是尝试显示不允许的数值,例如Inf
或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
。这是一个例子,每个红色球体代表一个球形势的不同等值面: