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

📄 als2004multi.m

📁 多元曲线解析-交替最小二乘法,MCR-ALS
💻 M
📖 第 1 页 / 共 5 页
字号:
function varargout = als2004multi(varargin)
% ALS2004MULTI M-file for als2004multi.fig
%
% ALS2004MULTI permet la introduccio de restriccions en la resolucio.
%

% Last Modified by GUIDE v2.5 26-Jul-2004 16:10:08

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
    'gui_Singleton',  gui_Singleton, ...
    'gui_OpeningFcn', @als2004multi_OpeningFcn, ...
    'gui_OutputFcn',  @als2004multi_OutputFcn, ...
    'gui_LayoutFcn',  [] , ...
    'gui_Callback',   []);
if nargin & isstr(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT


% --- Executes just before als2004multi is made visible.
function als2004multi_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% varargin   command line arguments to als2004multi (see VARARGIN)

% Choose default command line output for als2004multi
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);

if evalin('base','als_opt.multi.datamod')==1
    set(handles.check_ccons,'enable','on');
    set(handles.check_scons,'enable','off');
elseif evalin('base','als_opt.multi.datamod')==2
    set(handles.check_ccons,'enable','off');
    set(handles.check_scons,'enable','on');
elseif evalin('base','als_opt.multi.datamod')==3
    set(handles.check_ccons,'enable','on');
    set(handles.check_scons,'enable','on');
end

evalin('base','als_opt.multi.ccons=0;');
evalin('base','als_opt.multi.scons=0;');
evalin('base','als_opt.multi.curr_cmat=1;');
evalin('base','als_opt.multi.curr_smat=1;');


% UIWAIT makes als2004multi wait for user response (see UIRESUME)
% uiwait(handles.figure1);


% --- Outputs from this function are returned to the command line.
function varargout = als2004multi_OutputFcn(hObject, eventdata, handles)
% varargout  cell array for returning output args (see VARARGOUT);
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure
varargout{1} = handles.output;



% *************************************************************************
% Multiple matrices
% *************************************************************************

% --- Executes during object creation, after setting all properties.
function popup_nmat_CreateFcn(hObject, eventdata, handles)
% hObject    handle to popup_nmat (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called

% Hint: popupmenu controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc
    set(hObject,'BackgroundColor','white');
else
    set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end

nexp=evalin('base','als_opt.nexp');
j=1;
for i=1:nexp,
    lsb=[i];
    lsv(j)={lsb};
    j=j+1;
end;
set(hObject,'string',lsv)



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

% Hint: get(hObject,'Value') returns toggle state of check_ccons

ccons=get(hObject,'Value');

scons=get(handles.check_scons,'Value');

if evalin('base','als_opt.multi.datamod')==1

    if ccons==0
        set(handles.text_nmat,'enable','on');
        set(handles.text_clau,'enable','on');
        set(handles.text_csub,'enable','on');
        set(handles.text_ssub,'enable','on');
        set(handles.text_X,'enable','on');
        set(handles.text_Y,'enable','on');
        set(handles.popup_nmat,'enable','on','value',1);
    else
        set(handles.text_nmat,'enable','off');
        set(handles.text_clau,'enable','off');
        set(handles.text_csub,'enable','off');
        set(handles.text_ssub,'enable','off');
        set(handles.text_X,'enable','off');
        set(handles.text_Y,'enable','off');
        set(handles.popup_nmat,'enable','off','value',1);
    end

elseif evalin('base','als_opt.multi.datamod')==3

    if ccons==0 & scons==0
        set(handles.text_nmat,'enable','on');
        set(handles.text_clau,'enable','on');
        set(handles.text_csub,'enable','on');
        set(handles.text_ssub,'enable','on');
        set(handles.text_X,'enable','on');
        set(handles.text_Y,'enable','on');
        set(handles.popup_nmat,'enable','on','value',1);
    elseif (ccons==0 & scons==1) | (ccons==1 & scons==0)
        set(handles.text_nmat,'enable','on');
        set(handles.text_clau,'enable','on');
        set(handles.text_csub,'enable','on');
        set(handles.text_ssub,'enable','on');
        set(handles.text_X,'enable','on');
        set(handles.text_Y,'enable','on');
        set(handles.popup_nmat,'enable','on','value',1);
    elseif ccons==1 & scons==1
        set(handles.text_nmat,'enable','off');
        set(handles.text_clau,'enable','off');
        set(handles.text_csub,'enable','off');
        set(handles.text_ssub,'enable','off');
        set(handles.text_X,'enable','off');
        set(handles.text_Y,'enable','off');
        set(handles.popup_nmat,'enable','off','value',1);
    end


end


assignin('base','scons',scons);
evalin('base','als_opt.multi.scons=scons;');
evalin('base','clear scons');

assignin('base','ccons',ccons);
evalin('base','als_opt.multi.ccons=ccons;');
evalin('base','clear ccons');


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

% Hint: get(hObject,'Value') returns toggle state of check_scons

scons=get(hObject,'Value');

ccons=get(handles.check_ccons,'Value');


if evalin('base','als_opt.multi.datamod')==2

    if scons==0
        set(handles.text_nmat,'enable','on');
        set(handles.text_clau,'enable','on');
        set(handles.text_csub,'enable','on');
        set(handles.text_ssub,'enable','on');
        set(handles.text_X,'enable','on');
        set(handles.text_Y,'enable','on');
        set(handles.popup_nmat,'enable','on','value',1);
    else
        set(handles.text_nmat,'enable','off');
        set(handles.text_clau,'enable','off');
        set(handles.text_csub,'enable','off');
        set(handles.text_ssub,'enable','off');
        set(handles.text_X,'enable','off');
        set(handles.text_Y,'enable','off');
        set(handles.popup_nmat,'enable','off','value',1);
    end

elseif evalin('base','als_opt.multi.datamod')==3

    if ccons==0 & scons==0
        set(handles.text_nmat,'enable','on');
        set(handles.text_clau,'enable','on');
        set(handles.text_csub,'enable','on');
        set(handles.text_ssub,'enable','on');
        set(handles.text_X,'enable','on');
        set(handles.text_Y,'enable','on');
        set(handles.popup_nmat,'enable','on','value',1);
    elseif (ccons==0 & scons==1) | (ccons==1 & scons==0)
        set(handles.text_nmat,'enable','on');
        set(handles.text_clau,'enable','on');
        set(handles.text_csub,'enable','on');
        set(handles.text_ssub,'enable','on');
        set(handles.text_X,'enable','on');
        set(handles.text_Y,'enable','on');
        set(handles.popup_nmat,'enable','on','value',1);
    elseif ccons==1 & scons==1
        set(handles.text_nmat,'enable','off');
        set(handles.text_clau,'enable','off');
        set(handles.text_csub,'enable','off');
        set(handles.text_ssub,'enable','off');
        set(handles.text_X,'enable','off');
        set(handles.text_Y,'enable','off');
        set(handles.popup_nmat,'enable','off','value',1);
    end

end


assignin('base','scons',scons);
evalin('base','als_opt.multi.scons=scons;');
evalin('base','clear scons');

assignin('base','ccons',ccons);
evalin('base','als_opt.multi.ccons=ccons;');
evalin('base','clear ccons');


% --- Executes on selection change in popup_nmat.
function popup_nmat_Callback(hObject, eventdata, handles)
% hObject    handle to popup_nmat (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 popup_nmat contents as cell array
%        contents{get(hObject,'Value')} returns selected item from popup_nmat

nmat = get(hObject,'value');

former_cmat=evalin('base','als_opt.multi.curr_cmat');
former_smat=evalin('base','als_opt.multi.curr_smat'); %estava curr_cmat

if nmat==1
    set(handles.text_X,'string',1)
    set(handles.text_Y,'string',1)
end

if evalin('base','als_opt.multi.datamod')==1
    set(handles.text_X,'string',nmat)
    set(handles.text_Y,'string',1)
    curr_cmat=nmat;
    assignin('base','curr_cmat',curr_cmat);
    evalin('base','als_opt.multi.curr_cmat=curr_cmat;');
    evalin('base','clear curr_cmat');
    curr_smat=1;
    assignin('base','curr_smat',curr_smat);
    evalin('base','als_opt.multi.curr_smat=curr_smat;');
    evalin('base','clear curr_smat');
elseif evalin('base','als_opt.multi.datamod')==2
    set(handles.text_X,'string',1)
    set(handles.text_Y,'string',nmat)
    curr_cmat=1;
    assignin('base','curr_cmat',curr_cmat);
    evalin('base','als_opt.multi.curr_cmat=curr_cmat;');
    evalin('base','clear curr_cmat');
    curr_smat=nmat;
    assignin('base','curr_smat',curr_smat);
    evalin('base','als_opt.multi.curr_smat=curr_smat;');
    evalin('base','clear curr_smat');
elseif evalin('base','als_opt.multi.datamod')==3

    %     ***********************
    limc=[];
    b=1;
    j=evalin('base','als_opt.nexp')/evalin('base','als_opt.multi.matc');
    for i=1:j:evalin('base','als_opt.nexp')
        limc(b)=i;
        b=b+1;
    end
    for i=1:evalin('base','als_opt.multi.matc');
        if (limc(i)-nmat)<=0 & (limc(i)-nmat)>=(-evalin('base','als_opt.multi.matr')+1)
            curr_cmat=i;
        end
    end
    %     *****************************
    limc=[];
    b=1;
    j=evalin('base','als_opt.nexp')/evalin('base','als_opt.multi.matc');
    limc=[1:j];

    for k=1:evalin('base','als_opt.multi.matc');
        for i=1:evalin('base','als_opt.multi.matr');
            if (limc(i)-nmat)==0 | (limc(i)-nmat)==(-k*evalin('base','als_opt.multi.matr'))
                curr_smat=i;
            end
        end
    end
    %     *****************************

    set(handles.text_X,'string',curr_cmat)
    set(handles.text_Y,'string',curr_smat)

end

% start -> values that can be modified

if get(handles.popup_ncnn,'value') ~=1 & (former_cmat~=curr_cmat);
    set(handles.popup_ncnn,'value',1);
    set(handles.edit_spcnn,'string',' ');
end

if get(handles.popup_nsnn,'value') ~=1& (former_smat~=curr_smat);
    set(handles.popup_nsnn,'value',1);
    set(handles.edit_spsnn,'string',' ');
end

if get(handles.popup_ncuni,'value') ~=1 & (former_cmat~=curr_cmat);
    set(handles.popup_ncuni,'value',1);
    set(handles.edit_spunic,'string',' ');
end

if get(handles.popup_nsuni,'value') ~=1& (former_smat~=curr_smat);
    set(handles.popup_nsuni,'value',1);
    set(handles.edit_spunis,'string',' ');
end

if get(handles.radio_cclos,'value')==1
    if get(handles.popup_nclos,'value') ~=1 & (former_cmat~=curr_cmat);
        set(handles.popup_nclos,'value',1);
        set(handles.edit_1clos,'string',' ');
        set(handles.edit_2clos,'string',' ');
        set(handles.edit_vclos1,'string',' ');
        set(handles.edit_vclos2,'string',' ');
        set(handles.popup_1closcond,'value',1);
        set(handles.popup_2closcond,'value',1);
        set(handles.edit_1spclos,'string',' ');
        set(handles.edit_2spclos,'string',' ');
        set(handles.check_vclos,'value',0);
    end
end

⌨️ 快捷键说明

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