📄 create_gr_model.m
字号:
function varargout = create_gr_model(varargin)
% CREATE_GR_MODEL create model for global reconstruction
% Batch mode using: GrModel=create_gr_model(X,model);
% model - model function
% X- data
% example: GrModel=create_gr_model(X,'x1=c3*x3+c22*x2^2');
%
% Last Modified by GUIDE v2.5 24-Jan-2004 12:17:31
% last modified 12.12.05
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @create_gr_model_OpeningFcn, ...
'gui_OutputFcn', @create_gr_model_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(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 create_gr_model is made visible.
function create_gr_model_OpeningFcn(hObject, eventdata, handles, varargin)
% hObject handle to figure
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to create_gr_model (see VARARGIN)
% Choose default command line output for create_gr_model
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes create_gr_model wait for user response (see UIRESUME)
% uiwait(handles.create_gr_model);
global cgrmGLOBALS
guidata(hObject, handles);
if isempty(varargin)
error('Not enougth input parameters');
else
if isa(varargin{1},'struct')
cgrmGLOBALS.x=varargin{1};
else
cgrmGLOBALS.x.data=varargin{1};
[x,y]=size(varargin{1});
for i=1:y
cgrmGLOBALS.x.name{i}=['crd_' num2str(i)];
end
cgrmGLOBALS.x.time=(1:x)';
end
end
if length(varargin)==2
cgrmGLOBALS.auto=1;
else
cgrmGLOBALS.auto=0;
end
if length(varargin)<2
cgrmGLOBALS.model='';
show_lin_model(handles);
else
cgrmGLOBALS.model=varargin{2};
set(handles.edit_gm,'string',cgrmGLOBALS.model);
end
STR=[];
STR_listbox=[];
for i=1:length(cgrmGLOBALS.x.name)
STR=[STR '|' cgrmGLOBALS.x.name{i}];
STR_listbox{i}=['''x' num2str(i) ''' is ' cgrmGLOBALS.x.name{i}];
end
set(handles.popup_menu,'string',STR(2:end));
set(handles.listbox,'string',STR_listbox)
guidata(hObject, handles);
% --- Outputs from this function are returned to the command line.
function varargout = create_gr_model_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
global cgrmGLOBALS
if cgrmGLOBALS.auto
compute_button_Callback(handles.compute_button, [], handles);
if nargout
varargout{1} =cgrmGLOBALS.modelinfo;
end
else
uiwait;
try
if nargout
varargout{1} =cgrmGLOBALS.modelinfo;
end
catch
end
end
try
close(handles.create_gr_model);
catch
end
% --- Executes on button press in lin_model_button.
function lin_model_button_Callback(hObject, eventdata, handles)
% hObject handle to lin_model_button (see GCBO)
% handles structure with handles and user data (see GUIDATA)
set(hObject,'value',1);
set([handles.quadric_model_button handles.cubic_model_button],'value',0);
show_lin_model(handles);
% --- Executes on button press in quadric_model_button.
function quadric_model_button_Callback(hObject, eventdata, handles)
% hObject handle to quadric_model_button (see GCBO)
% handles structure with handles and user data (see GUIDATA)
set(hObject,'value',1);
set([handles.lin_model_button handles.cubic_model_button],'value',0);
show_quadric_model(handles);
% --- Executes on button press in cubic_model_button.
function cubic_model_button_Callback(hObject, eventdata, handles)
% hObject handle to cubic_model_button (see GCBO)
% handles structure with handles and user data (see GUIDATA)
set(hObject,'value',1);
set([handles.quadric_model_button handles.lin_model_button],'value',0);
show_cubic_model(handles);
% --- Executes during object creation, after setting all properties.
function edit_gm_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit_gm (see GCBO)
% handles empty - handles not created until after all CreateFcns called
% Hint: edit 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
function edit_gm_Callback(hObject, eventdata, handles)
% hObject handle to edit_gm (see GCBO)
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit_gm as text
% str2double(get(hObject,'String')) returns contents of edit_gm as a double
% --- Executes on button press in close_button.
function close_button_Callback(hObject, eventdata, handles)
% hObject handle to close_button (see GCBO)
% handles structure with handles and user data (see GUIDATA)
close(handles.create_gr_model);
% --- Executes on button press in compute_button.
function compute_button_Callback(hObject, eventdata, handles)
% hObject handle to compute_button (see GCBO)
% handles structure with handles and user data (see GUIDATA)
global cgrmGLOBALS
gm=get(handles.edit_gm,'string');
for i=1:length(gm)
if gm(i)=='='
break
end
end
[coeff_names,funcs]=da_df_parser(gm(i+1:end));
modelinfo.coeffs=coeff_names;
modelinfo.funcs=funcs;
modelinfo.left_part=gm(1:i-1);
modelinfo.gm=gm;
modelinfo.x=cgrmGLOBALS.x;
gm=gr_algorithm(modelinfo);
cgrmGLOBALS.modelinfo=gm;
uiresume;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function str=show_lin_model(handles);
global cgrmGLOBALS
crdNo=length(cgrmGLOBALS.x.name);
unique_crd_num=get(handles.popup_menu,'value');
str=sprintf('x%d=',unique_crd_num);
for i=1:crdNo
if str(end)=='='
if unique_crd_num~=i
str=[str sprintf('c%d*x%d',i,i)];
end
else
if unique_crd_num~=i
str=[str '+' sprintf('c%d*x%d',i,i)];
end
end
end
set(handles.edit_gm,'string',str);
function str=show_quadric_model(handles);
global cgrmGLOBALS
crdNo=length(cgrmGLOBALS.x.name);
str=show_lin_model(handles);
unique_crd_num=get(handles.popup_menu,'value');
for i=1:crdNo
if unique_crd_num~=i
str=[str '+' sprintf('c%d%d*x%d^2',i,i,i)];
end
end
for i=1:crdNo
for j=i+1:crdNo
if (unique_crd_num~=i)&(unique_crd_num~=j)
str=[str '+' sprintf('c%d%d*x%d*x%d',i,j,i,j)];
end
end
end
set(handles.edit_gm,'string',str);
function show_cubic_model(handles);
global cgrmGLOBALS
crdNo=length(cgrmGLOBALS.x.name);
str=show_quadric_model(handles);
unique_crd_num=get(handles.popup_menu,'value');
for i=1:crdNo
if unique_crd_num~=i
str=[str '+' sprintf('c%d%d%d*x%d^3',i,i,i,i)];
end
end
for i=1:crdNo
for j=1:crdNo
if i~=j
if (unique_crd_num~=i)&(unique_crd_num~=j)
str=[str '+' sprintf('c%d%d%d*x%d^2*x%d',i,i,j,i,j)];
end
end
end
end
for i=1:crdNo
for j=i+1:crdNo
for k=j+1:crdNo
if (unique_crd_num~=i)&(unique_crd_num~=j)&(unique_crd_num~=k)
str=[str '+' sprintf('c%d%d%d*x%d*x%d*x%d',i,j,k,i,j,k)];
end
end
end
end
set(handles.edit_gm,'string',str);
% --- Executes during object creation, after setting all properties.
function popup_menu_CreateFcn(hObject, eventdata, handles)
% hObject handle to popup_menu (see GCBO)
% 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
% --- Executes on selection change in popup_menu.
function popup_menu_Callback(hObject, eventdata, handles)
% hObject handle to popup_menu (see GCBO)
% handles structure with handles and user data (see GUIDATA)
% Hints: contents = get(hObject,'String') returns popup_menu contents as cell array
% contents{get(hObject,'Value')} returns selected item from popup_menu
if get(handles.cubic_model_button,'value')
show_cubic_model(handles);
end
if get(handles.quadric_model_button,'value')
show_quadric_model(handles);
end
if get(handles.lin_model_button,'value')
show_lin_model(handles);
end
% --- Executes during object creation, after setting all properties.
function listbox_CreateFcn(hObject, eventdata, handles)
% hObject handle to listbox (see GCBO)
% handles empty - handles not created until after all CreateFcns called
% Hint: listbox 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
% --- Executes on selection change in listbox.
function listbox_Callback(hObject, eventdata, handles)
% hObject handle to listbox (see GCBO)
% handles structure with handles and user data (see GUIDATA)
% Hints: contents = get(hObject,'String') returns listbox contents as cell array
% contents{get(hObject,'Value')} returns selected item from listbox
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -