1

我是 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
4

2 回答 2

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"}}]

c==d? 真的

编号 X 值 Y 值 Z 值

1 0 0 50

2 5 0 50

3 10 0 50

4 15 0 50

5 20 0 50

. . . .

于 2011-08-26T12:54:43.193 回答
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]

在此处输入图像描述

于 2011-08-26T13:09:03.990 回答