MATLAB箭袋 - 微小的箭头

时间:2013-10-30 06:13:03

标签: matlab

我试图在MATLAB中使用quiver函数绘制x和y速度。

我有x,y,u和v数组(带有它们通常的含义),尺寸为100x100
因此,结果是我的颤动情节密集,除非我放大,否则我看不到箭头 有点像这样:quiver not drawing arrows just lots of blue, matlab

看看我的情节: My quiver plot

有没有办法让箭袋密度更低(并且箭头更大)?我打算将x轴范围剪辑到0-4。但除此之外什么呢?

出于准确性考虑,我无法使网格密度降低。但是,如果需要使绘图看起来更好,我愿意忽略一些精细的数据点。

2 个答案:

答案 0 :(得分:7)

例如,您可以通过绘制绘制减少数量的箭头(假设您的数据在数组中)

quiver(x(1:2:end,1:2:end),y(1:2:end,1:2:end),u(1:2:end,1:2:end),v(1:2:end,1:2:end))

这个例子中的2表示我们只绘制了四分之一的箭头。你当然可以改变它,只要你改变所有的2,这样阵列的大小都适当。

如果您想更改箭头的长度,有两个选项。首先,您可以使用缩放选项scale=2按指定的数量缩放箭头,或者如果您希望所有箭头的长度相同,则可以标准化速度。这样做会丢失信息,因为您无法通过查看箭头来比较速度的大小,但在某些情况下它可能很有用。您可以将uv除以sqrt(u.^2+v.^2)(在您希望绘制箭头的点处。)

希望能够很好地帮助和完善一切。

答案 1 :(得分:1)

您需要使间隔值更大一些,以使矩阵更稀疏。

这非常密集:

1:0.0001:100

这非常稀疏:

1:1:100

修改

如果你有图像处理工具包,你可以使用imresize函数来降低矩阵分辨率:

newMat = imresize(oldMat, newSize); 

如果您没有工具箱,那么您可以使用interp2插值以与this example类似的方式调整大小:

orgY = 1:size(oldMat,1); 
orgX = 1:size(oldMat,2); 
[orgX,orgY] = meshgrid(orgX ,orgY); 
newY = linspace(1,size(mat,1),newHeight); 
newX = linspace(1,size(mat,2),newWidth); 
[newX,newY] = meshgrid(newX,newY); 
newMat = interp2(orgX,orgY,mat,newX,newY);

感谢@David,如果你想删除一些单独的点你可以做到:

xPlot=x(1:2:end)