SCATTER3 需要x
, y
and z
以及其他分组参数对于单个系列是相同大小的 Nx1 向量或对于 M 系列是 NxM 矩阵。
您拥有全空间 3D 数据。要使坐标向量大小相等,请使用MESHGRID (or NDGRID) 功能:
[X, Y, Z] = meshgrid(t, y, a);
然后你可以使用SCATTER3:
scatter3( X(:), Y(:), Z(:), [], S(:) )
问题是,因为它的全空间数据分散3不会有帮助,特别是如果你有很多点。
您也许可以过滤您的 S 变量(类似于idx = S > 0
),然后您可以绘制过滤后的数据。
如果您确实需要可视化所有数据,请查看体积可视化在 MATLAB 文档中。我可以推荐SLICE函数,例如。
EDIT
以下是小向量的完整 3D 空间散点图示例(m
, n
, o
等于 5) 与S = rand([m,n,o]); scatter3( X(:), Y(:), Z(:), [], S(:), 'filled' )
![scatter example](https://i.stack.imgur.com/gGb3q.png)
EDIT 2
从您对其他答案的评论中我发现您有 32x76050x4 矩阵。实际上,您可以一次绘制一个 2D 切片。您可以使用 IMAGEESC 功能以 2D 方式进行,也可以使用 SLICE 功能以 3D 方式进行。
Try:
imagesc(S(:,:,k))
where k
是第 3 维从 1 到 4 的数字。
Or try
slice(S, [], [], 1:size(S,3))
shading flat
![slice example](https://i.stack.imgur.com/LzeAm.png)