如何在MATLAB中从树状图中找到祖先节点和父节点
我在MATLAB中得到了一个连杆算法的输出Z 输出Z的结构在此链接中给出(向下滚动到输出) 我试图找到树状图内部节点和叶子的系谱。谱系定义为连接叶i(内部节点α_h)和根α_1的内部节点的有序集合。我还希望能够找到父节点-这是v的节点w,其中w在从根到v的路径上紧跟在v之前。有人愿意解释一下我是如何使用MATLAB实现这一点的吗 如果我的定义不够清晰,图中会显示一个示例 叶3的系谱为G(3)={α7,α2,α1},内部节点α7的系谱为G(α7)={α7,α2,α1}。父节点的示例:α_7的父节点是α_2,我将其表示为g(α_2)=α_7。我知道,给定层次聚类的输出Z,树的索引与图像不同,因此,一个与树状图的索引方式一致的代码是绝对正确的。我只关心树状图的输出是否正确如何在MATLAB中从树状图中找到祖先节点和父节点,matlab,dendrogram,Matlab,Dendrogram,我在MATLAB中得到了一个连杆算法的输出Z 输出Z的结构在此链接中给出(向下滚动到输出) 我试图找到树状图内部节点和叶子的系谱。谱系定义为连接叶i(内部节点α_h)和根α_1的内部节点的有序集合。我还希望能够找到父节点-这是v的节点w,其中w在从根到v的路径上紧跟在v之前。有人愿意解释一下我是如何使用MATLAB实现这一点的吗 如果我的定义不够清晰,图中会显示一个示例 叶3的系谱为G(3)={α7,α2,α1},内部节点α7的系谱为G(α7)={α7,α2,α1}。父节点的示例:α_7的父节
我希望现在可以更清楚地了解我希望代码使用Z的输入查找和执行的操作。非常感谢您的帮助 一个小例子可以让事情变得更清楚:
X = [1,2,4,5,8]';
D = pdist(X);
L = linkage(D, 'ward');
dendrogram(L, 'labels', cellfun(@num2str, num2cell(X), 'uniform', false));
如果在L中添加第四列
L(:, end+1) = (size(L, 1) + (1 : size(L, 1)));
然后,L的每一行都有条目[“节点数”、“节点数”、“在级别合并”、“父节点数”]
所以根节点总是L(end,end),左节点有一个最大大小的数字(X,1),内部节点的数字大于大小(X,1)
在您的示例中,L大致如下所示:
L = [...
9, 10, 1, 10; % 10 = alpha_9
5, 6, 2, 11; % 11 = alpha_8
3, 4, 3, 12; % 12 = alpha_7
1, 2, 4, 13; % 13 = alpha_6
7, 12, 5, 14; % 14 = alpha_5
8, 15, 6, 15; % 15 = alpha_4
16, 11, 7, 16; % 16 = alpha_3
14, 13, 8, 17; % 17 = alpha_2
18, 17, 9, 18; % 18 = alpha_1
];
dendrogram(L);
请注意,标签的构造已经是正确的。一个小例子可以让事情更清楚:
X = [1,2,4,5,8]';
D = pdist(X);
L = linkage(D, 'ward');
dendrogram(L, 'labels', cellfun(@num2str, num2cell(X), 'uniform', false));
如果在L中添加第四列
L(:, end+1) = (size(L, 1) + (1 : size(L, 1)));
然后,L的每一行都有条目[“节点数”、“节点数”、“在级别合并”、“父节点数”]
所以根节点总是L(end,end),左节点有一个最大大小的数字(X,1),内部节点的数字大于大小(X,1)
在您的示例中,L大致如下所示:
L = [...
9, 10, 1, 10; % 10 = alpha_9
5, 6, 2, 11; % 11 = alpha_8
3, 4, 3, 12; % 12 = alpha_7
1, 2, 4, 13; % 13 = alpha_6
7, 12, 5, 14; % 14 = alpha_5
8, 15, 6, 15; % 15 = alpha_4
16, 11, 7, 16; % 16 = alpha_3
14, 13, 8, 17; % 17 = alpha_2
18, 17, 9, 18; % 18 = alpha_1
];
dendrogram(L);
请注意,标签的结构已经正确。对于迟交的回复,我深表歉意。啊,我现在明白了。因此,对于系谱,我现在只需要搜索L的增强版本的最后一列,因为前一个父节点的父节点将位于相应叶节点的系谱中?是的,没错。如果我的回答能回答你的问题,你能接受吗?谢谢:-)是的,我现在就接受。谢谢你的帮助!对迟来的答复表示歉意。啊,我现在明白了。因此,对于系谱,我现在只需要搜索L的增强版本的最后一列,因为前一个父节点的父节点将位于相应叶节点的系谱中?是的,没错。如果我的回答能回答你的问题,你能接受吗?谢谢:-)是的,我现在就接受。谢谢你的帮助!