作业帮 > 综合 > 作业

matlab画四维图:如何将已有数据画到圆柱表面,已有数据用表面颜色表示?

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/17 05:12:13
matlab画四维图:如何将已有数据画到圆柱表面,已有数据用表面颜色表示?
给出数据的格式,看看能不能解决
再问: 就是将一定数目的值插到圆柱的侧表面上,用颜色表示就好,上下表面不用画。网上有interp3和slice,画立方体可以,圆柱画不出来
再答: 那你原来的数据x,y,z,v这样每个都是3维矩阵吗?
再问: 你可以自己做一个圆柱体或圆柱表面,v是一列任意长度的随机数,然后将这列随机数作为颜色值画到圆柱的侧表面上,可以吗?
再答: [xx yy zz]=cylinder(1,40);v=repmat(rand(1,40),[2 1]);surf(xx,yy,zz,v);

再问: 应该是我没把问题说明白,我的圆柱侧面是由多层小格组成的,要插入多个数值。就是把z轴分为两份或多份时有没有简单点的方法?(Z: 0-0.5作为一层,0.5-1作为一层)

用高手的方法拼接一下基本已经解决问题了,就是有些复杂,不知道有没有简单点的方法。

非常感谢!!!
再答: 所以我要你将问题描述清楚,数据结构给清楚分多少层,多少格不是问题问题是有多少个点表示的颜色,怎么填色到园柱体表面
[xx yy zz]=cylinder(r,n);这个函数是要用来产生圆柱面网格的实际上功能比较强大,还可以用来产生曲线围绕z轴中心旋转的曲面

r是一个数列,是半径,如果产生一个圆柱面的话那么r是一个有m个相等的数组成的数列而n是在圆周方向分成网格的分数而产生的圆柱面,z的范围在[0~1]
举个例子,要产生一个半径为1,高度0~1的圆柱面在z方向,分成10份,在圆角度方向分成30分,你可以用
[xx,yy,zz]=cylinder(ones(11,1),30)就可以产生一个圆柱曲面网格
这里的xx,yy,zz都是11x31的网格
给这个网格填色需要11x31或者10x30的矩阵v=rand(10,30);surf(xx,yy,zz,v);