⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fastupdatemapxy.m

📁 有监督自组织映射-偏最小二乘算法(A supervised self-organising map–partial least squares algorithm),可以用语多变量数据的回归分析
💻 M
字号:
function [NewXMap,NewYMap] = FastUpdateMapXY(Xtr,XMap,Ytr,YMap,MLKP,iter);

[NvarX,Nunit]=size(XMap);
[NvarY,Nunit]=size(YMap);
[Nobjects,Dummy] = size(Xtr);
ZeroXMap=zeros(NvarX,Nunit);
ZeroYMap=zeros(NvarY,Nunit);
ZeroCount=zeros(Nunit,1);
Tstart=cputime;
[Alpha] = DetermineAlphaValues(MLKP);

disp('Entering fast map update mode');

ContinueUpdate='Y';
Iteration=0;
while (ContinueUpdate == 'Y')
    Iteration=Iteration+1;
    OldXMap=XMap;
    OldYMap=YMap;
    NewXMap=ZeroXMap;
    NewYMap=ZeroYMap;
    Count=ZeroCount;
    for iobj=1:Nobjects
        X=Xtr(iobj,:);
        Y=Ytr(iobj,:);
        if (MLKP.TrainingMethod == 'MLK' | MLKP.TrainingMethod =='CPN')
            [Value, Winner] = DetermineWinner(X,XMap,MLKP.DistTypeX,MLKP);
        else
            [Value, Winner] = DetermineSimultaneousWinner(X,XMap,Y,YMap,MLKP,Alpha(iter));
        end
        NewXMap(:,Winner)= NewXMap(:,Winner)+X';
        NewYMap(:,Winner)= NewYMap(:,Winner)+Y';
        Count(Winner) = Count(Winner)+1;
    end
    for iunit=1:Nunit
        if (Count(iunit) > 0)
            NewXMap(:,iunit)=NewXMap(:,iunit)/Count(iunit);
            NewYMap(:,iunit)=NewYMap(:,iunit)/Count(iunit);
        else
            NewXMap(:,iunit)=XMap(:,iunit);
            NewYMap(:,iunit)=YMap(:,iunit);
        end
    end
    if ((sum(sum(NewXMap-OldXMap))+sum(sum(NewYMap-OldYMap))) == 0)
        Message=sprintf('Fast map update converged after %d iterations in %g seconds',...
                        Iteration,cputime-Tstart);
        disp(Message);
        ContinueUpdate ='N';
    else
        XMap=NewXMap;
        YMap=NewYMap;
    end
end

⌨️ 快捷键说明

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