亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? lge.m

?? LGE算法(Linear Graph Embedding)用于降維
?? M
字號:
function [eigvector, eigvalue, elapse] = LGE(W, D, options, data)
% LGE: Linear Graph Embedding
%
%       [eigvector, eigvalue] = LGE(W, D, options, data)
% 
%             Input:
%               data       - data matrix. Each row vector of data is a
%                         sample vector. 
%               W       - Affinity graph matrix. 
%               D       - Constraint graph matrix. 
%                         LGE solves the optimization problem of 
%                         a* = argmax (a'data'WXa)/(a'data'DXa) 
%                         Default: D = I 
%
%               options - Struct value in Matlab. The fields in options
%                         that can be set:
%
%                     ReducedDim   -  The dimensionality of the reduced
%                                     subspace. If 0, all the dimensions
%                                     will be kept. Default is 30. 
%
%                            Regu  -  1: regularized solution, 
%                                        a* = argmax (a'X'WXa)/(a'X'DXa+ReguAlpha*I) 
%                                     0: solve the sinularity problem by SVD (PCA) 
%                                     Default: 0 
%
%                        ReguAlpha -  The regularization parameter. Valid
%                                     when Regu==1. Default value is 0.1. 
%
%                            ReguType  -  'Ridge': Tikhonov regularization
%                                         'Custom': User provided
%                                                   regularization matrix
%                                          Default: 'Ridge' 
%                        regularizerR  -   (nFea x nFea) regularization
%                                          matrix which should be provided
%                                          if ReguType is 'Custom'. nFea is
%                                          the feature number of data
%                                          matrix
%
%                            PCARatio     -  The percentage of principal
%                                            component kept in the PCA
%                                            step. The percentage is
%                                            calculated based on the
%                                            eigenvalue. Default is 1
%                                            (100%, all the non-zero
%                                            eigenvalues will be kept.
%                                            If PCARatio > 1, the PCA step
%                                            will keep exactly PCARatio principle
%                                            components (does not exceed the
%                                            exact number of non-zero components).  
%
%
%             Output:
%               eigvector - Each column is an embedding function, for a new
%                           sample vector (row vector) x,  y = x*eigvector
%                           will be the embedding result of x.
%               eigvalue  - The sorted eigvalue of the eigen-problem.
%               elapse    - Time spent on different steps 
%                           
% 
%
%    Examples:
%
% See also LPP, NPE, IsoProjection, LSDA.
%
%
%Reference:
%
%   Deng Cai, Xiaofei He, Yuxiao Hu, Jiawei Han, and Thomas Huang, 
%   "Learning a Spatially Smooth Subspace for Face Recognition", CVPR'2007
% 
%   version 2.1 --June/2007 
%   version 2.0 --May/2007 
%   version 1.0 --Sep/2006 
%
%   Written by Deng Cai (dengcai2 AT cs.uiuc.edu)
%

if ~exist('data','var')
    global data;
end


if (~exist('options','var'))
   options = [];
end

if isfield(options,'ReducedDim')
    Dim = options.ReducedDim;
else
    Dim = 30;
end

if ~isfield(options,'Regu') | ~options.Regu
    bPCA = 1;
    if ~isfield(options,'PCARatio')
        options.PCARatio = 1;
    end
else
    bPCA = 0;
    if ~isfield(options,'ReguType')
        options.ReguType = 'Ridge';
    end
    if ~isfield(options,'ReguAlpha')
        options.ReguAlpha = 0.1;
    end
end

bD = 1;
if ~exist('D','var') | isempty(D)
    bD = 0;
end


[nSmp,nFea] = size(data);
if size(W,1) ~= nSmp
    error('W and data mismatch!');
end
if bD & (size(D,1) ~= nSmp)
    error('D and data mismatch!');
end

tmp_T = cputime;

bChol = 0;
if bPCA & (nSmp > nFea) & (options.PCARatio >= 1)
    if bD
        DPrime = data'*D*data;
    else
        DPrime = data'*data;
    end
    if issparse(DPrime)
        DPrime = full(DPrime);
    end
    DPrime = max(DPrime,DPrime');
    [R,p] = chol(DPrime);
    
    if p == 0
        bPCA = 0;
        bChol = 1;
    end
end

%======================================
% SVD
%======================================

if bPCA    
    if nSmp > nFea
        ddata = data'*data;
        if issparse(ddata)
            ddata = full(ddata);
        end
        ddata = max(ddata,ddata');

        clear ddata;

        maxEigValue = max(abs(eigvalue_PCA));
        eigIdx = find(eigvalue_PCA/maxEigValue < 1e-12);
        eigvalue_PCA(eigIdx) = [];
        eigvector_PCA(:,eigIdx) = [];

        [junk, index] = sort(-eigvalue_PCA);
        eigvalue_PCA = eigvalue_PCA(index);
        eigvector_PCA = eigvector_PCA(:, index);
        
        %=======================================
        if options.PCARatio > 1
            idx = options.PCARatio;
            if idx < length(eigvalue_PCA)
                eigvalue_PCA = eigvalue_PCA(1:idx);
                end
        elseif options.PCARatio < 1
            sumEig = sum(eigvalue_PCA);
            sumEig = sumEig*options.PCARatio;
            sumNow = 0;
            for idx = 1:length(eigvalue_PCA)
                sumNow = sumNow + eigvalue_PCA(idx);
                if sumNow >= sumEig
                    break;
                end
            end
            eigvalue_PCA = eigvalue_PCA(1:idx);
            eigvector_PCA = eigvector_PCA(:,1:idx);
        end
        %=======================================
        
        if bD
            data = data*eigvector_PCA;
        else
            eigvalue_PCA = eigvalue_PCA.^-.5;
            data = (data*eigvector_PCA).*repmat(eigvalue_PCA',nSmp,1);
        end
    else
        ddata = data*data';
        if issparse(ddata)
            ddata = full(ddata);
        end
        ddata = max(ddata,ddata');

        [eigvector, eigvalue_PCA] = eig(ddata);
        eigvalue_PCA = diag(eigvalue_PCA);
        clear ddata;

        maxEigValue = max(eigvalue_PCA);
        eigIdx = find(eigvalue_PCA/maxEigValue < 1e-12);
        eigvalue_PCA(eigIdx) = [];
        eigvector(:,eigIdx) = [];

        [junk, index] = sort(-eigvalue_PCA);
        eigvalue_PCA = eigvalue_PCA(index);
        eigvector = eigvector(:, index);
        
        %=======================================
        if options.PCARatio > 1
            idx = options.PCARatio;
            if idx < length(eigvalue_PCA)
                eigvalue_PCA = eigvalue_PCA(1:idx);
                eigvector = eigvector(:,1:idx);
            end
        elseif options.PCARatio < 1
            sumEig = sum(eigvalue_PCA);
            sumEig = sumEig*options.PCARatio;
            sumNow = 0;
            for idx = 1:length(eigvalue_PCA)
                sumNow = sumNow + eigvalue_PCA(idx);
                if sumNow >= sumEig
                    break;
                end
            end
            eigvalue_PCA = eigvalue_PCA(1:idx);
            eigvector = eigvector(:,1:idx);
        end
        %=======================================
        
        eigvalue_PCA = eigvalue_PCA.^.5;
        eigvalue_PCAMinus = eigvalue_PCA.^-1;

        eigvector_PCA = (data'*eigvector).*repmat(eigvalue_PCAMinus',nFea,1);

        if bD
            data = eigvector.*repmat(eigvalue_PCA',nSmp,1);
        else
            data = eigvector;
        end
        
        eigvalue_PCA = eigvalue_PCAMinus;
        

        clear eigvector;
    end
    
    if bD
        DPrime = data'*D*data;
        DPrime = max(DPrime,DPrime');
    end
else
    if ~bChol
        if bD
            DPrime = data'*D*data;
        else
            DPrime = data'*data;
        end

        switch lower(options.ReguType)
            case {lower('Ridge')}
                for i=1:size(DPrime,1)
                    DPrime(i,i) = DPrime(i,i) + options.ReguAlpha;
                end
            case {lower('Tensor')}
                DPrime = DPrime + options.ReguAlpha*options.regularizerR;
            case {lower('Custom')}
                DPrime = DPrime + options.ReguAlpha*options.regularizerR;
            otherwise
                error('ReguType does not exist!');
        end

        DPrime = max(DPrime,DPrime');
    end
end

WPrime = data'*W*data;
WPrime = max(WPrime,WPrime');


elapse.timePCA = cputime - tmp_T;

tmp_T = cputime;


%======================================
% Generalized Eigen
%======================================

dimMatrix = size(WPrime,2);

if Dim > dimMatrix
    Dim = dimMatrix; 
end


if isfield(options,'bEigs')
    if options.bEigs
        bEigs = 1;
    else
        bEigs = 0;
    end
else
    if (dimMatrix > 1000 & Dim < dimMatrix/10) | (dimMatrix > 500 & Dim < dimMatrix/20) | (dimMatrix > 250 & Dim < dimMatrix/30) 
        bEigs = 1;
    else
        bEigs = 0;
    end
end


if bEigs
    %disp('use eigs to speed up!');
    option = struct('disp',0);
    if bPCA & ~bD
        [eigvector, eigvalue] = eigs(WPrime,Dim,'la',option);
    else
        if bChol
            option.cholB = 1;
            [eigvector, eigvalue] = eigs(WPrime,R,Dim,'la',option);
        else
            [eigvector, eigvalue] = eigs(WPrime,DPrime,Dim,'la',option);
        end
    end
    eigvalue = diag(eigvalue);
else
    if bPCA & ~bD 
        [eigvector, eigvalue] = eig(WPrime);
    else
        [eigvector, eigvalue] = eig(WPrime,DPrime);
    end
    eigvalue = diag(eigvalue);
    
    [junk, index] = sort(-eigvalue);
    eigvalue = eigvalue(index);
    eigvector = eigvector(:,index);

    if Dim < size(eigvector,2)
        eigvector = eigvector(:, 1:Dim);
        eigvalue = eigvalue(1:Dim);
    end
end



if bPCA
    if bD
        eigvector = eigvector_PCA*eigvector;
    else
        eigvector = eigvector_PCA*(repmat(eigvalue_PCA,1,length(eigvalue)).*eigvector);
    end
end

for i = 1:size(eigvector,2)
    eigvector(:,i) = eigvector(:,i)./norm(eigvector(:,i));
end

    
elapse.timeMethod = cputime - tmp_T; 
elapse.timeAll = elapse.timePCA + elapse.timeMethod;


?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一级艳片视频免费观看| 中文字幕一区二区三区不卡| 久久久久国产精品麻豆| 亚洲色图在线看| 国产主播一区二区三区| 欧美色成人综合| 国产精品天美传媒沈樵| 国产中文字幕一区| 欧美女孩性生活视频| 亚洲欧美日本韩国| 国产成人av电影| 日韩一区二区三区高清免费看看 | 99久久久国产精品| 欧美成人一区二区| 天天射综合影视| 在线观看不卡一区| 亚洲人成网站影音先锋播放| 国产精品一区在线| 久久久一区二区| 精品综合免费视频观看| 欧美一区二区三区婷婷月色| 亚洲午夜激情av| 欧美性猛交xxxx黑人交| 亚洲三级小视频| 色婷婷精品久久二区二区蜜臂av| 国产精品久久午夜夜伦鲁鲁| 国产成人av一区二区三区在线 | 91精品国产免费| 亚洲观看高清完整版在线观看| 91在线免费播放| 亚洲精品国产a久久久久久 | 国产一区二区三区在线看麻豆| 欧美情侣在线播放| 日韩综合一区二区| 欧美日韩和欧美的一区二区| 亚洲激情图片qvod| 91久久精品一区二区三| 亚洲黄色录像片| 欧美性xxxxx极品少妇| 亚洲一二三四区| 欧美人妖巨大在线| 日韩电影在线观看电影| 欧美一区二区三级| 经典一区二区三区| 国产欧美日韩另类一区| 99在线热播精品免费| 一区二区三区免费在线观看| 欧洲一区二区三区在线| 视频在线观看91| 欧美一级理论片| 国产99久久精品| 亚洲欧美一区二区久久| 欧美日韩视频在线观看一区二区三区 | 五月天中文字幕一区二区| 欧美喷潮久久久xxxxx| 激情综合网最新| 国产日韩欧美精品综合| 色综合色综合色综合色综合色综合 | 亚洲成人动漫在线免费观看| 欧美老肥妇做.爰bbww| 国模冰冰炮一区二区| 国产欧美中文在线| 欧美在线短视频| 精品一区二区三区在线观看| 国产精品第五页| 91精品国产综合久久久久久久| 国产一区二区在线电影| 亚洲精品高清在线观看| 精品国产一区二区三区久久久蜜月| 国产成人精品网址| 亚洲一区二区三区视频在线播放| 欧美一区三区二区| bt欧美亚洲午夜电影天堂| 亚洲成av人片一区二区梦乃| 久久久精品2019中文字幕之3| 91蜜桃在线观看| 美国欧美日韩国产在线播放| 日韩毛片在线免费观看| 精品国产一区二区在线观看| 色婷婷综合中文久久一本| 久久成人免费日本黄色| 亚洲精品中文字幕乱码三区| 精品国产sm最大网站免费看| 一本久久综合亚洲鲁鲁五月天| 老司机午夜精品| 亚洲国产美国国产综合一区二区| 久久精品一二三| 欧美一区二区久久久| 91免费观看在线| 高清不卡在线观看av| 毛片av一区二区| 一区二区三区日韩欧美| 中文字幕电影一区| 精品国产免费一区二区三区香蕉| 欧美午夜精品一区二区三区| av中文字幕亚洲| 国产毛片精品视频| 麻豆精品国产91久久久久久| 亚洲综合无码一区二区| 亚洲欧洲日韩av| 国产精品国产三级国产aⅴ原创 | av一区二区三区| 国产高清精品久久久久| 免费精品视频最新在线| 婷婷一区二区三区| 亚洲最大成人网4388xx| 国产精品成人一区二区艾草| 中文字幕乱码一区二区免费| 久久精品一区二区三区不卡牛牛| 欧美一级欧美三级在线观看| 欧美综合一区二区三区| 欧美在线一区二区三区| 日本精品一区二区三区高清| 99精品欧美一区二区三区小说 | 91久久免费观看| 91成人网在线| 欧美影视一区在线| 欧美性色欧美a在线播放| 色婷婷久久99综合精品jk白丝| 色乱码一区二区三区88| 欧美亚州韩日在线看免费版国语版| 色婷婷精品久久二区二区蜜臀av | 中文字幕av不卡| 国产精品全国免费观看高清| 国产精品美女一区二区| 亚洲欧洲日韩在线| 亚洲国产精品欧美一二99| 亚洲大型综合色站| 蜜臂av日日欢夜夜爽一区| 看片的网站亚洲| 国产乱国产乱300精品| 国产不卡免费视频| 91天堂素人约啪| 欧美丝袜丝nylons| 欧美成人精品二区三区99精品| 精品免费99久久| 欧美国产一区在线| 一区二区三区小说| 日韩在线卡一卡二| 国产精品乡下勾搭老头1| 成人av午夜影院| 欧美日韩一级黄| 国产片一区二区三区| 一片黄亚洲嫩模| 久久99精品国产麻豆婷婷洗澡| 国产精品69毛片高清亚洲| 99re成人精品视频| 欧美日韩www| 国产色综合久久| 亚洲一区二区三区四区中文字幕| 蜜桃视频一区二区三区在线观看 | 国产精品一区二区三区四区| 91麻豆免费看| 欧美不卡123| 亚洲制服丝袜在线| 国产另类ts人妖一区二区| 日本高清成人免费播放| 日韩精品一区二区三区视频| 中文字幕欧美一区| 麻豆精品视频在线| 色综合一个色综合亚洲| 精品少妇一区二区三区免费观看 | 欧美成人精精品一区二区频| 自拍av一区二区三区| 久久电影网电视剧免费观看| 972aa.com艺术欧美| 欧美大片一区二区| 一区二区三区精品在线观看| 久久激情五月激情| 欧美性受极品xxxx喷水| 国产精品久久久久国产精品日日| 奇米一区二区三区av| 色域天天综合网| 久久久精品黄色| 免费在线视频一区| 在线视频一区二区免费| 日本一区二区三区视频视频| 免费不卡在线视频| 欧美日韩亚洲另类| 亚洲精品成人在线| 成人免费黄色在线| 久久精品水蜜桃av综合天堂| 免费看欧美女人艹b| 欧美日韩精品免费| 亚洲一区二区在线观看视频| 成人激情免费网站| 日本一区二区三区高清不卡| 奇米777欧美一区二区| 欧美日韩一区在线| 洋洋av久久久久久久一区| 99re视频精品| 亚洲素人一区二区| www.视频一区| 国产精品久久综合| av日韩在线网站| 国产精品卡一卡二| 97精品国产露脸对白| 亚洲日本韩国一区| 色欧美乱欧美15图片| 亚洲美女电影在线|