Я использую объект CLUSTERGRAM из Bioinformatics Toolbox (версия 3.7). MATLAB версия R2011a.Переносные векторы объекта CLUSTERGRAM (MATLAB)
Я хотел бы получить перестановки векторов для строки и столбцы для clustergram, как я могу сделать с dendrogram функции:
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 от:
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 и dendrogram, но упорядочение листьев намного лучше (оптимально) в clustergram, чем в дендрограмме.
Вы не получите информацию от 'get (cgo, 'ColumnLabels')' и 'get (cgo, 'RowLabels')'? – Jonas
@Jonas: Я действительно использую другие ярлыки, но ваше решение может быть обходным путем. Не устанавливать временные метки, затем получать векторы и сбрасывать метки. Логически я думал, что 'get (cgo, 'RowLabels')' вернет метки в исходном порядке, но я не тестировал. Похоже, что 'set' и' get' работают по-разному, поэтому 'set (cgo, 'RowLabels', get (cgo, 'RowLabels'))' даст неверный результат. В любом случае, пожалуйста, отправьте его в качестве ответа. – yuk
сделано по запросу :) – Jonas