?? eigdec.m
字號:
function [evals, evec] = eigdec(x, N)%EIGDEC Sorted eigendecomposition%% Description% EVALS = EIGDEC(X, N computes the largest N eigenvalues of the% matrix X in descending order. [EVALS, EVEC] = EIGDEC(X, N) also% computes the corresponding eigenvectors.%% See also% PCA, PPCA%% Copyright (c) Ian T Nabney (1996-2001)if nargout == 1 evals_only = logical(1);else evals_only = logical(0);endif N ~= round(N) | N < 1 | N > size(x, 2) error('Number of PCs must be integer, >0, < dim');end% Find the eigenvalues of the data covariance matrixif evals_only % Use eig function as always more efficient than eigs here temp_evals = eig(x);else % Use eig function unless fraction of eigenvalues required is tiny if (N/size(x, 2)) > 0.04 [temp_evec, temp_evals] = eig(x); else options.disp = 0; [temp_evec, temp_evals] = eigs(x, N, 'LM', options); end 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_only if evals == temp_evals(1:N) % Originals were in order evec = temp_evec(:, 1:N); return else % Need to reorder the eigenvectors for i=1:N evec(:,i) = temp_evec(:,perm(i)); end endend
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -