Mik*_*ike 7 3d matlab colors multidimensional-array
我需要制作一个3D表面,其中颜色代表第四个变量.我知道"冲浪"与我所需要的相似,但事实并非如此.基本上,我有以下变量:
t = [1:m]
y = [1:n]
a = [1:o]
这些应该是三个笛卡尔坐标轴.
我还有一个变量S,其尺寸为mxnxo,基本上是幅度,是前三个变量的函数(即S = f(t,y,a)).我想要用颜色来表示.
总而言之,我需要一个形式(t,y,a,S)的图形,其中前三个变量是不等大小的向量,最终变量是一个多维数组,其维度由前三个确定.
提前致谢.
yuk*_*yuk 10
SCATTER3要求x
,y
以及z
与其他分组参数是用于单个串联或N×M个矩阵为M系列相等大小的NX1载体.
您拥有全空间3D数据.要制作大小相同的坐标向量,请使用MESHGRID(或NDGRID)函数:
[X, Y, Z] = meshgrid(t, y, a);
Run Code Online (Sandbox Code Playgroud)
然后你可以使用SCATTER3:
scatter3( X(:), Y(:), Z(:), [], S(:) )
Run Code Online (Sandbox Code Playgroud)
问题是因为如果你有很多分数,那么它的全空间数据scatter3将没有用处.
你可以过滤你的S变量(类似的东西idx = S > 0
),然后你可以绘制过滤后的数据.
如果您确实需要可视化所有数据,请查看MATLAB文档中的Volume可视化.例如,我可以推荐SLICE功能.
编辑
下面是完整的3D空间散点图小载体的例子(m
,n
,o
具有等于5)S = rand([m,n,o]); scatter3( X(:), Y(:), Z(:), [], S(:), 'filled' )
编辑2
从您的评论到其他答案,我发现您有32x76050x4矩阵.您实际上可以一次绘制一个2D切片.您可以使用IMAGESC功能在2D中进行,或使用SLICE功能在3D中进行.
尝试:
imagesc(S(:,:,k))
Run Code Online (Sandbox Code Playgroud)
其中k
是从1到4的数的第三维.
或者试试
slice(S, [], [], 1:size(S,3))
shading flat
Run Code Online (Sandbox Code Playgroud)
我一直使用 scatter3 在 3d 空间中对像素进行着色/调整大小。我相信签名是:
scatter3(x,y,z, size, color)
Run Code Online (Sandbox Code Playgroud)
大小和颜色可以是标量或长度等于坐标的向量。我通常使用颜色或大小来反映第四个属性,具体取决于我所显示的内容。我这台机器上没有Matlab,所以如果我的记忆对用法不完全准确,请原谅我。“help scatter3”应该更好地描述它。