about summary refs log tree commit diff
path: root/sourcecodes/bnt-master/KPMtools/sort_evec.m
diff options
context:
space:
mode:
Diffstat (limited to 'sourcecodes/bnt-master/KPMtools/sort_evec.m')
-rw-r--r--sourcecodes/bnt-master/KPMtools/sort_evec.m22
1 files changed, 22 insertions, 0 deletions
diff --git a/sourcecodes/bnt-master/KPMtools/sort_evec.m b/sourcecodes/bnt-master/KPMtools/sort_evec.m
new file mode 100644
index 00000000..e934aa56
--- /dev/null
+++ b/sourcecodes/bnt-master/KPMtools/sort_evec.m
@@ -0,0 +1,22 @@
+function [evec, evals] = sort_evec(temp_evec, temp_evals, N)
+
+if ~isvectorBNT(temp_evals)
+  temp_evals = diag(temp_evals);
+end
+
+% Eigenvalues nearly always returned in descending order, but just
+% to make sure.....
+[evals perm] = sort(-temp_evals);
+evals = -evals(1:N);
+if evals == temp_evals(1:N)
+  % Originals were in order
+  evec = temp_evec(:, 1:N);
+  return
+else
+  fprintf('sorting evec\n');
+  % Need to reorder the eigenvectors
+  for i=1:N
+    evec(:,i) = temp_evec(:,perm(i));
+  end
+end
+