在Mathematica和Grid中对表进行编号

时间:2011-08-26 11:44:58

标签: list wolfram-mathematica nested-lists

我是Mathematica的新手。我会尽力把它写得有效。

我有两个问题:

Q1: 我有三个表格,它们的值为{x1,y1,z1},{x2,y2,z2} ......代码如下:

    Table[Table[Table[ {xcord, ycord, zcord},  
                       {xcord, 0, 50, 5}],  
                       {ycord, 0, 50,5}],   
                       {zcord, 50, 150, 10}]  

现在我需要像这样的输出

{1,x1,y1,z1}

{2,x2,y2,z2}

{3,x3,y3,z3}

.
.
{n,xn,yn,zn}

这有两个问题。

首先,我将结果格式化为类似{x1,y1,z1},{x2,y2,z2} ...... {xn,yn,zn}的结果,但我希望它以这种方式格式化:

 {x1,y1,z1}

 {x2,y2,z2}

 {x3,y3,z3}

 .
 .
 {xn,yn,zn}

其次,我无法对每组元素进行编号,在每组元素前添加数字,如

{1,x1,y1,z1}

{2,x2,y2,z2}

{3,x3,y3,z3}

.
.
{n,xn,yn,zn}

我试图为每组坐标制作单独的表格,并将这些表格对应于每组坐标。然后我尝试将它们分别放在不同的列中并加入它们但仍然没有成功。

Q2: 我想将从上表中获得的值分成如下所示的网格系统。像我们在Excel中所做的一样,所有值都位于不同的单元格中。

                 Number          X values  Y Values  Z values
                     1            x1        y1       z1
                     2            x2        y2       z2
                     .
                     .
                     n            xn        yn        zn

2 个答案:

答案 0 :(得分:3)

也许这就是你要找的东西。

元素编号由两种替代方法添加,给出c和d。

a = Table[Table[Table[{xcord, ycord, zcord}, {xcord, 0, 50, 5}],
    {ycord, 0, 50, 5}], {zcord, 50, 150, 10}];
b = Flatten[a, 2];
c = MapIndexed[Flatten[{First[#2], #1}] &, b];
d = Transpose[Prepend[Transpose[b], Range[Length[b]]]];
Print[Row[{"c==d? ", c == d}]]
TableForm[Append[Take[c, 5], Table[".", {4}]],
 TableHeadings -> {None,
   {"Number", "X Values", "Y Values", "Z Values"}}]

Ç== d?真

数字X值Y值Z值

1 0 0 50

2 5 0 50

3 10 0 50

4 15 0 50

5 20 0 50

。 。 。

答案 1 :(得分:2)

也许:

i = 0; t2 = 
 Grid[Join[{{"Number", "X Values", "Y Values", "Z Values"}}, 
   Flatten[Table[{++i, xcord, ycord, zcord}, 
                              {xcord, 0, 50, 5}, 
                              {ycord, 0, 50, 5}, 
                              {zcord, 50, 150, 10}], 2]], 
 Frame -> All]

enter image description here