箭袋不要画箭头,只是很多蓝色的,matlab

箭袋不要画箭头,只是很多蓝色的,matlab,matlab,Matlab,有人能告诉我箭袋绘图功能有什么问题吗?当我没有真正得到箭头时,它只是用大量蓝色填充空白。请看下图,然后看我的代码 这只是我轮廓的一部分,因为如果我试着把它画得更大,它会消耗处理能力。但我的功能、轮廓和其他一切都正常,这只是我遇到的问题 interval = -100:100; [X Y] = meshgrid(interval, interval); h = figure; contour(X, Y, Z); hold on; [FX,FY] = gradient(-Z); quiver

有人能告诉我箭袋绘图功能有什么问题吗?当我没有真正得到箭头时,它只是用大量蓝色填充空白。请看下图,然后看我的代码

这只是我轮廓的一部分,因为如果我试着把它画得更大,它会消耗处理能力。但我的功能、轮廓和其他一切都正常,这只是我遇到的问题

interval = -100:100;

[X Y] = meshgrid(interval, interval);

h = figure;
contour(X, Y, Z);

hold on;

[FX,FY] = gradient(-Z);
quiver(X, Y, FX, FY);

hold off;

如果我使我的矩阵更稀疏,例如使用“interval=linspace(-8001601200);”将得到如下结果:

编辑: 我需要的是像这样的轮廓线,但箭头应该和它们一起流动。现在这些看起来就像点,即使我再放大一点。如果我缩小,整个窗口将是蓝色的

如果有人想用它来解决这个问题,这里有完整的脚本

m1 = 1;
m2 = 0.4;
r1 = [1167 0 0];
r2 = [-467 0 0];
G = 9.82;

w = sqrt( G*(m1+m2) / norm(r1-r2)^3 );

interval = linspace(-800, 1600, 1200);

% Element-wise 2-norm
ewnorm = @(x,y) ( x.^2 + y.^2 ).^(1/2);

% Element-wise cross squared
ewcross2 = @(w,x,y) w^2.*( x.*x + y.*y );

[X Y] = meshgrid(interval, interval);

Z = - G*m1 ./ ewnorm( X-r1(1), Y-r1(2) ) - G*m2 ./ ewnorm( X-r2(1), Y-r2(2) ) - 1/2*ewcross2(w,X,Y);

h = figure;
contour(Z);

daspect([1 1 1]);

saveas(h, 'star1', 'eps');

hold on;

[FX,FY] = gradient(-Z);
quiver(X, Y, FX,FY);

hold off;

问题是网格过于密集。您只需要拥有生成有用网格所需的尽可能少的元素。因此,请尝试降低网格的密度:

interval = -100:2:100
如果要经常更改限制,可能需要避免使用
X:Y:Z
公式。请改用该函数:

interval = linspace(-100,100,10);
这将确保无论您的限制如何,网格都将
10x10
。在下面的注释中,您提到使用非常大的网格时,箭头显示为点。这是意料之中的。箭头反映给定点的“速度”。当你的绘图被放大到很大的程度时,绘图上任何给定点的速度几乎为0,因此箭头非常小。查看以及,以查看更多详细信息

如果必须看到大比例的箭头,可以尝试将
自动缩放
属性设置为
关闭
,或增加
自动缩放因子

quiver(X, Y, FX, FY, 'AutoScale', 'off');
quiver(X, Y, FX, FY, 'AutoScaleFactor', 10);

您可能还想使用
MarkerSize
MaxHeadSize
属性。我真的建议您查看所有的
QuiverGroup
属性并尝试一下。

您可以使用一个阈值

interval = -100:100;

[X Y] = meshgrid(interval, interval);

h = figure;
contour(X, Y, Z);

hold on;

[FX,FY] = gradient(-Z);
GM = sqrt(FX.^2 + FY.^2);
threshold = 0.1;
mask = GM > threshold;
quiver(X(mask), Y(mask), FX(mask), FY(mask));

hold off;

这将仅显示幅值>0.1的向量

这只是一个公式,因为我得到了预期的轮廓。如果我得到了-100:20:100,我得到了合理的箭头。然而,当我尝试在800:1600的时间间隔内做同样的事情时,我并没有取得多大的成功。。。我刚得到点。@calle-你的新网格太密了,请参阅修改后的答案。我在我的帖子中添加了更多信息。我尝试了许多不同的密度,但无法解决这个问题。