首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MATLAB箭图-小箭头

MATLAB箭图-小箭头
EN

Stack Overflow用户
提问于 2013-10-30 14:13:03
回答 2查看 13.1K关注 0票数 5

我正在尝试使用MATLAB中的箭图功能绘制x和y速度图。

我有维度为100x100的x、y、u和v数组(具有它们通常的含义)

因此,结果是我的箭图是密集的,除非我放大,否则我看不到箭头。

有点像这样:quiver not drawing arrows just lots of blue, matlab

看看我的图:

有没有办法让箭袋图不那么密集(有更大的箭头)?我计划将x轴范围裁剪到0-4。但除此之外还有什么呢?

出于精度考虑,我不能降低我的网格密度。但是,如果需要让绘图看起来更好,我愿意忽略一些细微的数据点。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-31 06:21:21

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

代码语言:javascript
运行
复制
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) (在您希望绘制箭头的点处)来完成此操作。

希望这会对你有所帮助,让一切都变得更好。

票数 8
EN

Stack Overflow用户

发布于 2013-10-30 14:16:39

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

这是非常密集的:

代码语言:javascript
运行
复制
1:0.0001:100

这是非常稀疏的:

代码语言:javascript
运行
复制
1:1:100

编辑:

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

代码语言:javascript
运行
复制
newMat = imresize(oldMat, newSize); 

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

代码语言:javascript
运行
复制
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,如果你只想去掉一些单独的点,你可以简单地这样做:

代码语言:javascript
运行
复制
xPlot=x(1:2:end)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19675089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档