我正在尝试使用MATLAB中的箭图功能绘制x和y速度图。
我有维度为100x100的x、y、u和v数组(具有它们通常的含义)
因此,结果是我的箭图是密集的,除非我放大,否则我看不到箭头。
有点像这样:quiver not drawing arrows just lots of blue, matlab
看看我的图:

有没有办法让箭袋图不那么密集(有更大的箭头)?我计划将x轴范围裁剪到0-4。但除此之外还有什么呢?
出于精度考虑,我不能降低我的网格密度。但是,如果需要让绘图看起来更好,我愿意忽略一些细微的数据点。
发布于 2013-10-31 06:21:21
例如,您可以通过绘制来绘制更少的箭头(假设您的数据在数组中)
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按指定的量缩放箭头,或者,如果希望所有箭头的长度相同,也可以规格化速度。这样做确实会丢失信息,因为您无法通过查看箭头来比较速度的大小,但在某些情况下,这可能是有用的。您可以通过将u和v除以sqrt(u.^2+v.^2) (在您希望绘制箭头的点处)来完成此操作。
希望这会对你有所帮助,让一切都变得更好。
发布于 2013-10-30 14:16:39
您需要使您的间隔值更大一点,以使您的矩阵更稀疏。
这是非常密集的:
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)https://stackoverflow.com/questions/19675089
复制相似问题