Bioinformatics Toolbox(ver 3.7)のCLUSTERGRAMオブジェクトを使用しています。MATLABバージョンR2011a。
樹状図関数で実行できるように、クラスターグラムの行と列の順列ベクトルを取得したいと思います。
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(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関数と樹状図関数を組み合わせて同様の図を作成できることは知っていますが、葉の順序は樹状図よりもクラスターグラムの方がはるかに優れています(最適です)。