您的位置:首页 > 编程语言 > MATLAB

Matlab 点阵四维表示

2016-02-05 11:12 316 查看
做数模时,Matlab的四维表示找了我一晚上,好浪费时间,在这里做个整理。

四维是XYZ加各点颜色t=f(x,y,z)

我把三维空间离散化成三维点阵,X,Y,Z表示其中一维,都是从1到 xn,yn,zn

现在我的是一个三维矩阵

所以现在是在一个三维空间布满了点,我想用颜色来表示这些点。

会查到scatter3和plot3这两个函数

我用的是scatter3

写一下我写的函数

scatter3(X(v),Y(v),Z(v),35,'filled','cdata',t(X(v),Y(v),Z(v)))

X(v):绘制点的X轴坐标

Y(v):绘制点的Y轴坐标

Z(v):绘制点的Z轴坐标

35:绘制点的大小

'filled':绘制点实心

'cdata',t(X(v),Y(v),Z(v)):将绘制的每个点根据t(x,y,z)的值填上颜色数据

(X(v),Y(v),Z(v))就是每一个点的坐标了,所以X(v),Y(v),Z(v)的数量一点要相同

X(v)=1:a:n1

Y(v)=1:b:n2

Z(v)=1:c:n3

这样写,每个轴上的数量一定要相等

但是这样写其实是有问题的

他表示(1,1,1)(1+a,1+b,1+c)...(n1,n2,n3),所以最后绘制出来应该是一条对角线

如果你要点阵的话,会比较麻烦,我是枚举的,应该有其他方法

我用数字少点做个例子比如2*2*2的三维矩阵

X(v)=[1,1,1,1,2,2,2,2]

Y(v)=[1,1,2,2,1,1,2,2]

Z(v)=[1,2,1,2,1,2,1,2]

这样三维矩阵里所有点就都表示出来了

接下来就是绘制

可以用一个for循环

for v=1:8

scatter3(X(v),Z(v),Y(v),35,'filled','cdata',t(X(v),Y(v),Z(v)))

hold on;%这个一定要!!!多次绘制保留原图,不刷新

grid on;%网格线

box on; %坐标轴刻度线

shading interp;

end

view(60,30)%视角

colorbar;%颜色条

title('Model')

效果图



这是一个11*11*11的三维矩阵,当时我用枚举法,可以想象我的心情吗?

1331个点*3。。。

如果有其他办法请务必留言,谢谢

对了,提醒一句,运行会很慢,所以点尽量少些。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: