首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CLUSTERGRAM对象的置换向量(MATLAB)

CLUSTERGRAM对象的置换向量(MATLAB)
EN

Stack Overflow用户
提问于 2012-06-13 19:32:05
回答 1查看 915关注 0票数 4

我正在使用来自生物信息学工具箱(Ver3.7)的CLUSTERGRAM对象。MATLAB版本R2011a。

我想获得行的置换向量和集群图中的列,就像我可以使用树状图函数那样:

代码语言:javascript
复制
x = magic(10);
>> [~,~,permrows] = dendrogram(linkage(x,'average','euc'))
permrows =
     9    10     6     7     8     1     2     4     5     3
>> [~,~,permcols] = dendrogram(linkage(x','average','euc'))
permcols =
     6     7     8     9     2     1     3     4     5    10

我发现聚类和树状图是不一样的,很可能是由于最优的叶序计算(我不想禁用它)。

例如,聚类图来自:

代码语言:javascript
复制
clustergram(x)

('average''eucledian'是集群图的默认方法)

向量(如附图所示)应是:

代码语言:javascript
复制
permrows = [1 2 4 5 3 10 9 6 7 8];
permcols = [1 2 8 9 6 7 10 5 4 3];

那么,如何通过编程获得这些向量呢?有人很熟悉这个东西吗?

有人能提出一个好的替代方案吗?我知道我可以创建一个类似的图形,结合图像和树状图的函数,但是叶序在聚类图中要比在树状图中更好(最优)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-14 16:40:17

从文档中可以看出,get(gco,'ColumnLabels')get(gco,'RowLabels') (其中gco是集群对象)应该会给出重新排序的标签。注意,对应的set-methods以原始顺序接收标签并在内部重新排序。

因此,如果您使用了自定义标签(set(gco,'RowLabels',originalLabels))

代码语言:javascript
复制
[~,permrows] = ismember(get(gco,'RowLabels'),originalLabels)

应该返回行排列。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11022051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档