首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Matlab:我如何控制流光管图的颜色?

Matlab:我如何控制流光管图的颜色?
EN

Stack Overflow用户
提问于 2015-03-24 07:36:54
回答 1查看 480关注 0票数 2

我目前正试图绘制三维流光管。我想要管的颜色对应于它们各自的速度(例如,慢=蓝,快=红)。

更准确地说,我有三个三维矩阵,包含了x,y和z方向的速度。流光管的颜色应该是sqrt(vx^2+vy^2+vz^2)。当使用streamtube(x,y,z,vx,vy,vz,sx,sy,sz)时,管是根据其z坐标着色的,这是无用的,因为它是一个3D图形。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-24 08:23:25

这并不容易(这应该是一个内置选项),但是通过修改每个管道的CData (它们都是自己的图形对象),您可以达到预期的结果。下面是一个例子

代码语言:javascript
复制
load wind
[sx,sy,sz] = meshgrid(80,20:10:50,0:5:15);
h=streamtube(x,y,z,u,v,w,sx,sy,sz);
drawnow
view(3)
axis tight
shading interp;

这给出了这幅画:

但接下来做的是:

代码语言:javascript
复制
vel=sqrt(u.^2+v.^2+w.^2); %// calculate velocities
for i=1:length(h)
    %// Modify the colour data of each tube
    set(h(i),'CData',interp3(x,y,z,vel,get(h(i),'XData')...
        ,get(h(i),'YData'),get(h(i),'ZData'),'spline'))
end
drawnow
view(3)
axis tight
shading interp;

给出这个结果

备注:

1)我不知道这是否完全正确,我不知道如何测试它

2)必须将已知点的速度数据插值到流管的顶点上

3)我发现spline插值选项工作得最好,但其他选项在其他情况下可能更好

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29227155

复制
相关文章

相似问题

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