📄 add_data.m
字号:
function varargout = add_data(varargin)
% ADD_DATA add data to TS
% last modified 28.08.07
% Last Modified by GUIDE v2.5 21-Aug-2003 13:24:29
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @add_data_OpeningFcn, ...
'gui_OutputFcn', @add_data_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 during object creation, after setting all properties.
function operation_list_CreateFcn(hObject, eventdata, handles)
% hObject handle to operation_list (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.
set(hObject,'String',[{' '};{'Delay'};{'1st derivative'};{'2nd derivative'};{'User defined expression'}]);
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end
% --- Executes on selection change in operation_list.
function operation_list_Callback(hObject, eventdata, handles)
% hObject handle to operation_list (see GCBO)
% handles structure with handles and user data (see GUIDATA)
% Hints: contents = get(hObject,'String') returns operation_list contents as cell array
% contents{get(hObject,'Value')} returns selected item from operation_list
if get(hObject,'value')==1
set(handles.compute_button,'enable','off');
else
set(handles.compute_button,'enable','on');
end
if get(hObject,'value')==5 %-User defined expr.
set(handles.expr_edit,'enable','on');
else
set(handles.expr_edit,'enable','off');
end
% --- Executes during object creation, after setting all properties.
function crd_list_CreateFcn(hObject, eventdata, handles)
% hObject handle to crd_list (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.
global TS GSD_GLOBALS
if GSD_GLOBALS.en_dis.datapresent
set(hObject,'String',TS.name);
end
if ispc
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end
% --- Executes just before add_data is made visible.
function add_data_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to add_data (see VARARGIN)
% Choose default command line output for add_data
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes add_data wait for user response (see UIRESUME)
% uiwait(handles.add_crd_fig);
global GSD_GLOBALS
GSD_GLOBALS.advanced_fig_handles=[GSD_GLOBALS.advanced_fig_handles hObject];
% --- Outputs from this function are returned to the command line.
function varargout = add_data_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
if ~isempty(handles)
varargout{1} = handles.output;
end
% --- Executes on selection change in crd_list.
function crd_list_Callback(hObject, eventdata, handles)
% hObject handle to crd_list (see GCBO)
% handles structure with handles and user data (see GUIDATA)
% Hints: contents = get(hObject,'String') returns crd_list contents as cell array
% contents{get(hObject,'Value')} returns selected item from crd_list
set(handles.operation_list,'value',1);
set(handles.compute_button,'enable','off');
set(handles.expr_edit,'enable','off');
% --- Executes during object creation, after setting all properties.
function expr_edit_CreateFcn(hObject, eventdata, handles)
% hObject handle to expr_edit (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 expr_edit_Callback(hObject, eventdata, handles)
% hObject handle to expr_edit (see GCBO)
% handles structure with handles and user data (see GUIDATA)
% --- 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.add_crd_fig);
% --- 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 TS GSD_GLOBALS
crdNo=get(handles.crd_list,'value');
operationNo=get(handles.operation_list,'value');
if GSD_GLOBALS.en_dis.datapresent
Data=TS.data(:,crdNo);
DataName=TS.name{crdNo};
Time=TS.time;
end
state=0;
switch operationNo
case 2 % Delay
if GSD_GLOBALS.en_dis.datapresent
[new_data,new_time,state]=get_delayed_crd(Data,Time,DataName);
new_data_name={['delayed_' DataName]};
else
warndlg('No data for operation','Action cancelled');
return
end
case 3 % 1st derivative
if GSD_GLOBALS.en_dis.datapresent
[new_data,state]=get_derivative('poly^4',1,Time',Data,Time');
new_time=Time;
new_data_name={['Der1_' DataName]};
else
warndlg('No data for operation','Action cancelled');
return
end
case 4 % 2nd derivative
if GSD_GLOBALS.en_dis.datapresent
[new_data,state]=get_derivative('poly^4',2,Time',Data,Time');
new_time=Time;
new_data_name={['Der2_' DataName]};
else
warndlg('No data for operation','Action cancelled');
return
end
case 5 % user defined expression
str=get(handles.expr_edit,'string');
if ~GSD_GLOBALS.en_dis.datapresent
try
new_data=evalin('caller',str);
catch
errordlg('An error occured during this operation. New data not created','Error');
return
end
[m n]=size(new_data);
for i=1:n
new_data_name(i)={['user_def_expr' num2str(i)]};
end
new_time=1:m;
state=1;
h=findobj('tag','MainFig');
if ~isempty(h)
set(h,'name',['Lab432 [generated data]']);
end
else
try
for i=1:length(TS.data(1,:))
assignin('caller',['x' num2str(i)],TS.data(:,i));
end
assignin('caller','x',Data);
new_data=evalin('caller',str);
for i=1:length(TS.data(1,:))
evalin('caller',['clear x' num2str(i)]);
end
evalin('caller','clear x');
new_time=Time;
S1=size(new_time); S2=size(new_data);
if (S1(1)~=S2(1))|(S1(2)~=S2(2))
state=0;
else
state=1;
end
new_data_name={['ude_' DataName]};
catch
state=0;
end
end
end
if state
if GSD_GLOBALS.en_dis.datapresent
time=TS.time;
data=TS.data;
while new_time(1)>time(1)
time(1)=[];
data(1,:)=[];
end
while new_time(end)<time(end)
time(end)=[];
data(end,:)=[];
end
while new_time(1)<time(1)
new_time(1)=[];
new_data(1)=[];
end
while new_time(end)>time(end)
new_time(end)=[];
new_data(end)=[];
end
TS.data=data;
TS.time=time;
%%%%%%%%%%%%%%%%%%
new_data=new_data(:);
TS.data=[TS.data new_data];
k=length(TS.name);
for i=1:length(new_data(1,:))
TS.name{k+i}=new_data_name{i};
end
else
new_data=new_data(:);
new_time=new_time(:);
TS.data=new_data;
TS.time=new_time;
TS.name=new_data_name;
% TS=ts(new_data,new_data_name{1},new_time);
GSD_GLOBALS.en_dis.datapresent=1;
gui_en_dis;
end
set(handles.crd_list,'String',TS.name);
set(hObject,'enable','off');
set(handles.operation_list,'value',1);
set(handles.expr_edit,'enable','off');
else
errordlg('An error occured during this operation. New data not created','Error');
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function [new_data,new_time, state]=get_delayed_crd(Data,Time,DataName)
state=0; new_data=[]; new_time=[];
prompt = {['Enter the time delay for ' DataName ':']};
dlg_title = 'Delaying';
num_lines= 1;
def = {'1'};
answer = inputdlg(prompt,dlg_title,num_lines,def);
if ~isempty(answer)
delay=str2num(answer{1});
ix=min(find((Time-Time(1))>=delay));
new_time=Time(1:end-ix+1); % (ix:end);
new_data=Data(ix:end); % %(1:end-ix+1);
state=1;
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -