在您的示例中,[US,TS]=ordschur(U, T, [1 2 3]);
将起作用。
该文档非常神秘。
给定一个集群索引的向量 CLUSTERS,与 E = EIG(T) 相称,并且具有相同 CLUSTERS 值的所有特征值形成一个集群,[US,TS] = ordschur(U,T,CLUSTERS) 将对指定的集群进行排序沿着 TS 的对角线降序排列,索引最高的簇出现在左上角。
你明白了吗?一开始我也没有。:) 本质上select
可以是一个索引向量:告诉你特征值需要去select(i)
哪个簇。i
这些簇按降序排序:如果例如select = [1 2 3 3 2 1]
,则第 3 和第 4 个特征值(按 的对角线指定的顺序T
)将首先出现(按未指定的顺序),然后是第 2 和第 5 个(按未指定的顺序),然后第一个和最后一个(按未指定的顺序)。
要按降序对特征值进行排序,您可以使用以下事实,即 的第二个输出sort
是指定排列的索引向量。
[U, T] = schur(H);
[~, select] = sort(ordeig(T));
[US, TS] = ordschur(U, T, select);
(的第二个输出sort
是我们可以用于此目的的索引向量。sort
默认情况下排序越来越多,但随后ordschur
按降序对簇编号进行排序,因此它可以神奇地工作。)
[编辑:这仍然不适用于所有矩阵;请参阅下面的@Jake 的答案以获得更正的版本。]