使用什么方法可视化4维阵列?

时间:2010-05-14 14:33:44

标签: multidimensional-array visualization

一个数组(一行元素):

[ ][ ][ ][ ][ ][ ]

二维数组(表格):

[ ][ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ][ ]
[ ][ ][ ][ ][ ][ ]

三维数组:

//Imagine the above table as a cube ( a table with depth )

如何可视化4-D阵列?

我最接近的是多个立方体,因此对于int[,,,] [5,10,2,7]将是立方体5,第10行,第2列,图层​​(深度)7。

我不确定这是否是可视化4-D阵列的最佳方式,但是......我不确定这是教它的最佳方式......但它确实具有以下优点:可扩展的(行立方体,立方体表,立方体立方体(6-d数组)

时间立方体是我能想到的另一种方式。

我在这里走在正确的轨道上吗?

12 个答案:

答案 0 :(得分:13)

如果您尝试为最终用户显示程序输出,那么您就是在正确的轨道上。

如果你正在尝试教它,我会简单地使用这种方法,然后我会深入解释计算机如何将它们全部保存在连续的记忆中 - http://www.plantation-productions.com/Webster/www.artofasm.com/Windows/HTML/Arraysa2.html。我认为这是理解它的最佳方式。


原始链接不再有效,但我在此处的互联网档案中找到了它 - http://web.archive.org/web/20120410120743/http://webster.cs.ucr.edu/AoA/Windows/HTML/Arraysa2.html


更新了第一段以显示更新的链接,感谢@OskensoKashi。

答案 1 :(得分:11)

这就是我教它的方式:一排立方体。此行的位置(或多维数据集编号)是第四维。

如果你想要5维,现在想象立方体的列和行!

对于6个维度,请描绘多维数据集的行和列(对于5个维度),现在添加这些行和列的“图层”。

...对于7个维度,想象上面的所有内容 - 包含在一行中的多维数据集中! ;)

是的,它一直是立方体。

答案 2 :(得分:4)

我不能在这里绘制,而是将其可视化为多维数据集的行(或数组)。

另一种方法是首先将立方体表示用于三维数组。现在用孩子的wooden block替换你脑海中的立方体,并将几个块排列在一起。

答案 3 :(得分:4)

三维以上的可视化将不会非常直观 - 无论你怎么努力。但是你走在正确的轨道上 - 时变物体是可视化高维数据的常用方法。

当物体在平面上移动时,三维物体可以通过物体与平面的时变交叉来可视化 - 例如,穿过平面的球体显示为从一个点到另一个点生长的圆圈半径为球体并再次收缩到一点。

四维物体也可以这样做。它们被可视化为物体与固定三维空间的交点,而物体沿第四维移动。

答案 4 :(得分:3)

将3个维度可视化为多维数据集,将4个维度视为一行多维数据集是有意义的,但正如您所见,它很难扩展。我通常认为的方法是将可视化强制为2维。例如,这通常是思考数组如何存储在C中的最简单方法。二维数组实际上只是指向更多数组或数组数组的指针数组。如果您真的被迫尝试以电子表格等二维格式呈现三维数据,那么这种方式的思考也会派上用场。必须将额外维度添加为列中的列或行中的行。

实际上,它可视化会很快伤害你的眼睛,但至少它可以在黑板上绘制,并且它不需要很多想象力来增加额外的尺寸。

1维(数组)

[] [] [] []

2维(阵列数组)

[ [] [] ]  [ [] [] ]  [ [] [] ]  [ [] [] ]

三维(阵列阵列阵列)

[  [ [] [] ]  [ [] [] ]  ]   [  [ [] [] ]  [ [] [] ]  ]

答案 5 :(得分:2)

这取决于您尝试可视化的数据类型。对于我在2D / 3D图像+ RGB颜色正常工作之前的某些情况。 2D图片形成两个维度,用于绘制点的红色,绿色,蓝色通道添加另外3个维度。

例如,看看游戏开发中使用的normal maps。它在每个点(3D)处使用法向矢量可视化表面(2D)。矢量用颜色分量x~红色,y~绿色,z~蓝色表示为127,以便能够存储负值。

答案 6 :(得分:1)

两个不错的多维可视化,既不是四维的,也是Parallel CoordinatesTable Lens

答案 7 :(得分:1)

超立方体!但实际上,如果你需要一个可视化,假设你从3D数组创建的每个盒子现在都有一个数组。有点像字符串理论的多维思想。

答案 8 :(得分:1)

一个可视化将是从一个表面到另一个表面的地图。想象一下,你的双手盘旋在桌子上的不同点上:无论何时你移动 ,你都会获得完全不同的价值。

答案 9 :(得分:1)

旧线程,但这是一个很好的链接,一个很好的例子和漂亮的图片。对某人来说可能会派上用场!

http://sp-productions.zxq.net/c++%20tutorial2.html

答案 10 :(得分:1)

写点东西来帮助自己理解。https://medium.com/@thegrowingunion/visualizing-multidimensionalarrays-4d-arrays-and-beyond-ae6ae536f07f

基本思想是,每个其他数组在电子表格/矩阵的其他行/列内添加一行/列。 所以你的顶行/ A-Z数组 对于A的每个实例。 a-z中有另一个数组 可以与1-256交叉引用。 (第二个维度)。 这就是2D平面上的3D阵列。

对于[2] [2] [2] [2] [2]的简单5D数组

位置1,1包含最后3个数组中的所有8个数据空间。 (因此,如果您看下面的图片,您会看到“ A1”,并注意到A1有一个盒子,而有8个单盒子。

这就像俄罗斯的娃娃。每个数组都包含其后的所有数组。

使用图像更容易理解。 :)

5d Array

答案 11 :(得分:0)

如果要将该4d数组显示为2d表,则每个单元格都包含一个表。所以主表是第一个2d表,它的单元格是第二个2d表'。

          | col 1    |   col 2  | col 3
___________________________________________
row 1     | 2d table | 2d table | 2d table 
-------------------------------------------
row 2     | ""  ""   | ""  ""   | "" ""