代码之家  ›  专栏  ›  技术社区  ›  Armstrongest

用什么方法来可视化一个四维数组?

  •  14
  • Armstrongest  · 技术社区  · 16 年前

    数组(一行元素):

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

    二维数组(表):

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

    三维阵列:

    //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数组)

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

    我走对了吗?

    11 回复  |  直到 8 年前
        1
  •  13
  •   warren.sentient Nate    8 年前

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

    如果你想教它,我会简单地使用这个方法,然后我会深入解释计算机是如何将它们保存在连续的内存中的。-- 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,更新了第一段以显示更新的链接。

        2
  •  11
  •   FrustratedWithFormsDesigner    16 年前

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

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

    对于6维,想象立方体的行和列(对于5维),现在添加这些行和列的“层”。

    …对于7维,想象一下上面所有的-包含在一行的立方体中!;)

    是的,一路上都是立方体。

        3
  •  4
  •   Joel Coehoorn    16 年前

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

    另一种方法是首先将多维数据集表示为三维数组。现在用一个孩子的 wooden block ,并将几个块排列在一起。

        4
  •  4
  •   Daniel Brückner    16 年前

    无论你多么努力地尝试,超过三维的可视化都不会非常直观。但是,您是在正确的轨道上-时变对象是可视化更高维度数据的常用方法。

    当物体在平面上移动时,物体与平面的交集随时间变化,三维物体可以可视化,例如,穿过平面的球体显示为一个圆,从一个点延伸到与球体半径相同的圆盘,然后再次缩小到一个点。

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

        5
  •  3
  •   tordal    16 年前

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

    实际上,把它形象化很快会伤害你的眼睛,但至少它可以画在黑板上,而且不需要太多的想象力来增加额外的维度。

    一维(数组)

    [] [] [] []

    二维(阵列阵列)

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

    三维(阵列阵列阵列)

    [  [ [] [] ]  [ [] [] ]  ]   [  [ [] [] ]  [ [] [] ]  ]
        6
  •  2
  •   nkrkv    16 年前

    这取决于您试图可视化的数据类型。在某些情况下,我以前的二维/三维图像+RGB颜色工作得很好。二维图片形成了两个维度,用于绘制点的红色、绿色、蓝色通道添加了另外三个维度。

    例如,看看 normal maps 用于游戏开发。它在每个点(3d)上显示一个具有法向量的曲面(2d)。向量用颜色分量x~红色、y~绿色、z~蓝色表示,并在127上移动以存储负值。

        7
  •  1
  •   Carl Manaster    16 年前

    两个很好的多维可视化,不是针对四个维度的,是 Parallel Coordinates Table Lens .

        8
  •  1
  •   Michael Dorgan    16 年前

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

        9
  •  1
  •   Charles    16 年前

    一种可视化是从一个表面到另一个表面的映射。想象你的手在桌子上的不同点上盘旋:任何时候你移动 任何一个 手你得到一个完全不同的价值。

        10
  •  1
  •   Deses    13 年前

    这是一个很好的链接,有一个很好的例子和图片。可能对某人有用!

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

        11
  •  0
  •   dave    8 年前

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

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