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

📄 als2004.m

📁 多元曲线解析-交替最小二乘法,MCR-ALS
💻 M
📖 第 1 页 / 共 2 页
字号:
function popupmenu4_Callback(hObject, eventdata, handles)
% hObject    handle to popupmenu4 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Hints: contents = get(hObject,'String') returns popupmenu4 contents as cell array
%        contents{get(hObject,'Value')} returns selected item from popupmenu4

popmenu4=get(handles.popupmenu4,'String');
pm4=get(handles.popupmenu4,'Value');

if pm4==1
else
    selec4=char([popmenu4(pm4)]);
    iniesta=evalin('base',selec4);
    assignin('base','iniesta',iniesta);
    evalin('base','als_opt.iniesta=iniesta;');
    matdad=evalin('base','als_opt.matdad');

    % check dimensions of initial estimates
    
    [nrow,ncol]=size(matdad);
    [nrow2,ncol2]=size(iniesta);
    
    if nrow2==nrow,	nsign=ncol2; ils=1;end
    if ncol2==nrow, nsign=nrow2; iniesta=iniesta'; ils=1; end 
    
    if ncol2==ncol, nsign=nrow2; ils=2;end
    if nrow2==ncol, nsign=ncol2; iniesta=iniesta'; ils=2; end
    
    if ils==1,
        conc=iniesta;
        assignin('base','conc',conc);
        [nrow,nsign]=size(conc);
        abss=conc\matdad;
        assignin('base','abss',abss);
        axes(handles.conc);
        
        [xi,yi]=size(conc);
        maxim=max(max(conc));minim=min(min(conc));
        
        if maxim > 0
            maxim1=maxim+0.2*maxim;
        else
            maxim1=maxim-0.2*abs(maxim)
        end

        if minim > 0
            minim1=minim+0.2*minim;
        else
            minim1=minim-0.2*abs(minim);
        end

        plot(conc);axis([1 xi minim1 maxim1]);title('Initial estimates of the concentration profiles');zoom on
        axes(handles.spec);
        [xi,yi]=size(abss);
        maxim=max(max(abss));minim=min(min(abss));
        
        if maxim > 0
            maxim1=maxim+0.2*maxim;
        else
            maxim1=maxim-0.2*abs(maxim)
        end

        if minim > 0
            minim1=minim+0.2*minim;
            else
            minim1=minim-0.2*abs(minim);
        end

        plot(abss');axis([1 yi minim1 maxim1]);title('Unconstrained spectra calculated by LS (iter 1)');zoom on
                
        % pca reproduction
        
        disp('   *********** Results obtained after application of PCA to the data matrix ***********');
        disp(' ');
        [u,s,v,d,sd]=pcarep(matdad,nsign);
        disp(' ');
        disp('   ************************************************************************************');
        disp(' ');
        disp(' ');
                
        axes(handles.scores);
        scmat=u*s;
        [xi,yi]=size(scmat);
        maxim=max(max(scmat));minim=min(min(scmat));
        
        if maxim > 0
            maxim1=maxim+0.2*maxim;
        else
            maxim1=maxim-0.2*abs(maxim)
        end

        if minim > 0
            minim1=minim+0.2*minim;
        else
            minim1=minim-0.2*abs(minim);
        end
        
        plot(scmat);axis([1 xi minim1 maxim1]);title('Scores matrix');zoom on
        axes(handles.loadings);
        [xi,yi]=size(v);
        maxim=max(max(v));minim=min(min(v));
        
        if maxim > 0
            maxim1=maxim+0.2*maxim;
        else
            maxim1=maxim-0.2*abs(maxim)
        end

        if minim > 0
            minim1=minim+0.2*minim;
        else
            minim1=minim-0.2*abs(minim);
        end
        
        plot(v);axis([1 xi minim1 maxim1]);
        title('Loadings matrix');zoom on

    end
    
    if ils==2,
        abss=iniesta;
        assignin('base','abss',abss);
        [nsign,ncol]=size(abss);
        conc=matdad/abss;
        assignin('base','conc',conc);
        axes(handles.conc);
        [xi,yi]=size(conc);
        maxim=max(max(conc));minim=min(min(conc));
        
        if maxim > 0
            maxim1=maxim+0.2*maxim;
        else
            maxim1=maxim-0.2*abs(maxim)
        end

        if minim > 0
            minim1=minim+0.2*minim;
        else
            minim1=minim-0.2*abs(minim);
        end

        plot(conc);axis([1 xi minim1 maxim1]);title('Unconstrained concentration profiles calculated by LS (iter 1)');zoom on
        axes(handles.spec);
        [xi,yi]=size(abss);
        maxim=max(max(abss));minim=min(min(abss));
        
        if maxim > 0
            maxim1=maxim+0.2*maxim;
        else
            maxim1=maxim-0.2*abs(maxim)
        end

        if minim > 0
            minim1=minim+0.2*minim;
        else
            minim1=minim-0.2*abs(minim);
        end

        plot(abss');axis([1 yi minim1 maxim1]);title('Initial estimates of the spectra');zoom on
                
        % pca reproduction
        
        disp('   *********** Results obtained after application of PCA to the data matrix ***********');
        disp(' ');
        [u,s,v,d,sd]=pcarep(matdad,nsign);
        disp(' ');
        disp('   ************************************************************************************');
        disp(' ');
        disp(' ');
                
        axes(handles.scores);
        scmat=u*s;
        [xi,yi]=size(scmat);
        maxim=max(max(scmat));minim=min(min(scmat));
        
        if maxim > 0
            maxim1=maxim+0.2*maxim;
        else
            maxim1=maxim-0.2*abs(maxim)
        end

        if minim > 0
            minim1=minim+0.2*minim;
        else
            minim1=minim-0.2*abs(minim);
        end

        plot(scmat);axis([1 xi minim1 maxim1]);title('Scores matrix');zoom on
        axes(handles.loadings);
        [xi,yi]=size(v);
        maxim=max(max(v));minim=min(min(v));
        
        if maxim > 0
            maxim1=maxim+0.2*maxim;
        else
            maxim1=maxim-0.2*abs(maxim)
        end

        if minim > 0
            minim1=minim+0.2*minim;
        else
            minim1=minim-0.2*abs(minim);
        end
    
        plot(v);axis([1 xi minim1 maxim1]);
        title('Loadings matrix');zoom on
              
    end

 set(handles.pushbutton1,'enable','on')   
    
end

% *************************************************************************

% --- Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

nexp=str2double(get(handles.edit3,'String'));
assignin('base','nexp',nexp);
evalin('base','als_opt.nexp=nexp;');
evalin('base','clear conc abss nexp matdad iniesta');

% *************************************************************************
% initializations for constraints

evalin('base','als_opt.noneg.noneg=0;');
evalin('base','als_opt.unimod.unimodal=0;');
evalin('base','als_opt.closure.closure=0;');
evalin('base','als_opt.cselc.cselcon=0;');
evalin('base','als_opt.sselc.sselcon=0;');
evalin('base','als_opt.trilin.tril=0;');
evalin('base','als_opt.multi.datamod=0;');
evalin('base','als_opt.opt.gr=''n'';');

% *************************************************************************

close;

if evalin('base','als_opt.nexp') > 1
    clas3way;
else
    als2004m;
end

⌨️ 快捷键说明

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