coefsvd.m

来自「SVD coefficient matrix from matrix of am」· M 代码 · 共 38 行

M
38
字号
function [Ahat,k]=coefsvd(X,alpha)

% Generacion de la matriz de coeficientes a traves de SVD
%   [Ahat,k]=coefsvd(X)
%   entradas:    
%       X: matriz de vectores de caracteristicas
%   Salidas:
%       Ahat: matriz de vectores de caracteristicas con coef. SVD
%       k: numero de clusters


[U,Sigma,V] = svd(X);

csigma = Sigma*ones(size(Sigma,2),1);             %guardo los valores singulares en un vector

rango = rank(X);                    %calculo el rango de X
csigma = csigma(1:rango);           %tomo los valores singulares hasta el rango de X
csigma2= csigma.^2;

delta =alpha*(sum(csigma2));      %calculo de delta

cum_aux = 0;
k=0;

while cum_aux <= delta
    k = k + 1;
    cum_aux = cum_aux + csigma2(k);             %calculo k, obteniendo el numero de cluster requerido
end

V_aux = V(:,1:k);           % acoto la matriz V a la cantidad de coeficientes que voy a usar
csigma_aux = csigma(1:k);   % acoto la cantidad de valores singulares a la cantidad de coeficientes que voy a usar

csigma_aux = ones(size(V_aux,1),1)*csigma_aux';       %formo una matriz donde las filas son csigma_aux

Ahat_aux = V_aux.*csigma_aux;                       %peso cada componente de v por su respectivo valor singular
Ahat = Ahat_aux';                           

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?