Daniel@0: function [evec, evals] = sort_evec(temp_evec, temp_evals, N) Daniel@0: Daniel@0: if ~isvectorBNT(temp_evals) Daniel@0: temp_evals = diag(temp_evals); Daniel@0: end Daniel@0: Daniel@0: % Eigenvalues nearly always returned in descending order, but just Daniel@0: % to make sure..... Daniel@0: [evals perm] = sort(-temp_evals); Daniel@0: evals = -evals(1:N); Daniel@0: if evals == temp_evals(1:N) Daniel@0: % Originals were in order Daniel@0: evec = temp_evec(:, 1:N); Daniel@0: return Daniel@0: else Daniel@0: fprintf('sorting evec\n'); Daniel@0: % Need to reorder the eigenvectors Daniel@0: for i=1:N Daniel@0: evec(:,i) = temp_evec(:,perm(i)); Daniel@0: end Daniel@0: end Daniel@0: