1

我想使用命令 quiver3(X,Y,Z,M,N,O) 来获得一个向量场,其中所有矩阵都是具有真实条目的 10x10x10 数组。现在我想绘制它并且只得到 4 个向量而不是我预期的 1000 个。这里有人知道,我可能做错了什么吗?如果您需要更多信息,我可以为您提供意见。

4

1 回答 1

3

假设在尝试显示数据时出现问题(而不是尝试显示不允许的数值,例如Infor 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 回答