如何限制3D颤动图中的箭头长度?

40次观看(最近30天)
一种
一种 2012年4月5日
我有一个动态范围较大的矢量场;我想在显示的向量幅度上设置一个高阈值。
对数量表也将有所帮助。

接受的答案

一种
一种 2012年5月14日
这是有效的方法:
ln = sqrt(U.^2 + V.^2 + W.^2);
Maxlen = 100;
u(ln> maxlen)= u(ln> maxlen)./ ln(ln> maxlen)。
v(ln> maxlen)= v(ln> maxlen)./ ln(ln> maxlen)。
w(ln> maxlen)= w(ln> maxlen)./ ln(ln> maxlen)。
Quiver3(X,Y,Z,U,V,W)

更多答案(2)

Matt Kindig
Matt Kindig 2012年4月5日
对于您的情况,我将直接指定箭头的长度,而不是让MATLAB执行向量的自动缩放。这将使您能够在长度,日志缩放或其他任何其他内容上指定上限。这样的事情:
%x,y,z是向量的起源
%u,v,w是向量的指示
ln = sqrt(U.^2 + V.^2 + W.^2);
u = u./ln;v = v./ln;w = w./ln;%归一化向量
Maxlen = 100;%根据您的喜好设置此
u = u*maxlen;%这将把“麦克伦”设置为最大长度
V = V*Maxlen;
w = w*maxlen;
%或日志缩放,
u = maxlen*log(u);%或类似
v = maxlen*log(v);
u =
HQ = Quiver3(X,Y,Z,,
2条评论
Matt Kindig
Matt Kindig 2012年4月5日
啊,是的。我很抱歉。您应该通过最大的LN而不是LN本身进行标准化。

登录发表评论。


肖恩·德·沃尔斯基(Sean de Wolski)
您不能只是takle log或log10 f u/v/w组件吗?
2-D示例:
[xx yy] = meshgrid(1:5);
u =(rand(5)+1)。^(rand(5)*10);
v =(rand(5)+1)。^(rand(5)*10);
Quiver(xx(:),yy(:),log10(u(:)),log10(v(:)))
每个评论更多 让我们不要放弃这个!
[xx yy] = meshgrid(1:5);
u =(rand(5)+1)。^(rand(5)*10)*标志(randn(5));
v =(rand(5)+1)。^(rand(5)*10)*标志(randn(5));
Quiver(xx(:),yy(:),sign(u(u(:))。))

标签

社区寻宝

在Matlab Central中找到宝藏,发现社区如何为您提供帮助!

开始狩猎!