我的问题:
有没有办法创建一棵价值树?类似于命令 TreeForm 的输出,但在节点中有值?
我为什么要这个?
我正在尝试做一个完整的程序来分析我的实验室课程的输出。每列数据作为一个符号赋值。一般来说,每一列都是有意义的:它不仅仅是一堆不同的变量。我想说的是,总的来说,计算是“按列”完成的。我的问题是,当我需要进行需要更复杂的“水平”结构的计算时:将变量分配给列缺乏“水平灵活性”。(在某种程度上,这是在 Excel 中使用$$
和数组公式解决的问题)
让我用一个例子来说明:
y={1,2,3,4,5,6,7,8,9};
x={-1,-2,-3};
我想将 y 的 1;;3, 4;;8, 9;;9 部分与 x 的每个元素相关联。我所说的关联的意思是,对于某些计算,函数的输入将作为每个集合的参数。
我知道 Map、Apply、Thread 和 MapThread 等功能。我一直在使用它们来解决这类问题,但有时它会变得有点混乱。
我也知道分区,如果我想在相同长度的子数组中分隔 y,它将解决我的问题。
正如我在我的问题中所说,我想要的是构建一个类似于网络/树的东西,它在我的计算的每个步骤中“归档”参数的结构。就像在网络理论中一样,当每个节点作为它与网络其余部分的连接的关联列表时。请注意,此列表不应包含值,而是包含连接节点的某种坐标
示例:n={3,2,5}
计算列表
长度不规则分区的均值和均方差
y={3,5,8,7,9,4,6,2,1,5};
我非常概念性的方法:
我的表/树的第一列将是数据 y。要引用某个列上的某个值,我将使用一对坐标 i,j:i 代表列,j 代表内部位置。我将为 y 分配坐标 i=1。
对于均值计算,我有什么样的“计算连接”?
Yav=F1[y]=Mean[y]
均值列 Xav i=2 将包含 3 个元素。我为每个人分配一个连接列表给 y:
(“”的连接是用一个 C“”来表示的)
CYav[[1]]: {1,{1,2,3}}
CYav[[2]]: {1,{4,5}};
CYav[[3]]: {1,{6,7,8,9,10}}
连接写成 {i,{j's of the elements of i}} 的形式
现在,让我们计算均方偏差。那是 ,
Ymsd=F2[y,Yav]=Mean[(y-Yav)^2]
此列i=3
也是 3 个元素。
对于这个计算,我想使用 i=1,2 列。与 y 的计算连接与用于计算 Yav 的连接相同。但现在,我需要将 Ymsd 连接到 Yav。
CYmsd[[1]]: {{1,{1,2,3}},{2,1}}
CYmsd[[2]]: {{1,{4,5}},{2,2}}
CYmsd[[3]]: {{1,{6,7,8,9,10}},{2,3}}
现在连接是前一种类型的一对连接,每列连接一个。
分配连接后,我将使用一个函数来获取正确的值,由创建的地图引导,并应用 F1、F2。