Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
来自CLUSTERGRAM对象的置换向量(MATLAB)_Matlab_Permutation_Dendrogram - Fatal编程技术网

来自CLUSTERGRAM对象的置换向量(MATLAB)

来自CLUSTERGRAM对象的置换向量(MATLAB),matlab,permutation,dendrogram,Matlab,Permutation,Dendrogram,我正在使用生物信息学工具箱(3.7版)中的对象。 MATLAB版本R2011a 我想为clustergram获取行和列的置换向量,就像我可以使用函数一样: x = magic(10); >> [~,~,permrows] = dendrogram(linkage(x,'average','euc')) permrows = 9 10 6 7 8 1 2 4 5 3 >> [~,~,permco

我正在使用生物信息学工具箱(3.7版)中的对象。 MATLAB版本R2011a

我想为clustergram获取行和列的置换向量,就像我可以使用函数一样:

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
我发现从聚类图和树状图来看,聚类是不同的,很可能是由于最佳叶序计算(我不想禁用它)

例如,对于来自的clustergram:

clustergram(x)
'average'
'eucledian'
是clustergram的默认方法)

矢量(如附图所示)应为:

permrows = [1 2 4 5 3 10 9 6 7 8];
permcols = [1 2 8 9 6 7 10 5 4 3];

那么,如何以编程方式获取这些向量呢?有人熟悉这个物体吗


有人能提出一个好的替代方案吗?我知道我可以结合imagesc和树状图函数创建一个类似的图形,但在聚类图中,叶子排序比在树状图中要好得多。

从文档中看,我猜
get(gco,'ColumnLabels')
get(gco,'RowLabels')
,其中
gco
是聚类图对象,应该给你重新排序的标签。请注意,相应的
set
-方法以原始顺序接收标签,并在内部对其重新排序

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


应返回行排列

你不会从
get(cgo,'ColumnLabels')
get(cgo,'RowLabels')
获取信息吗?@Jonas:我实际上使用了其他标签,但你的解决方案可以是一种变通方法。不设置临时标签,然后获取向量并重置标签。从逻辑上讲,我认为
get(cgo,'RowLabels')
将按原始顺序返回标签,但我没有进行测试。似乎
set
get
的工作方式不同,因此
set(cgo,'RowLabels',get(cgo,'RowLabels'))
将给出错误的结果。无论如何,请把它作为一个答案贴出来。这比我想象的还要容易。一个修正:
originalLabels
应该作为第二个参数,因为我需要向量来从原始数据复制聚类图。非常感谢@yuk:好的,编辑(顺便说一句:你也有编辑的特权)
[~,permrows] = ismember(get(gco,'RowLabels'),originalLabels)