www.gusucode.com > Matlab动力系统和时间序列分析工具箱 > Matlab动力系统和时间序列分析工具箱/lab432/gui/gui_create_attractor_md.m

    function gui_create_attractor_md
% Create attractor using methods of delay
% last modified 13.09.07

global TS ATTRACTOR GSD_GLOBALS
str=TS.name;
[selection,ok] = listdlg('PromptString','Select base data:',...
                'SelectionMode','single','ListString',str);
 if ok
     X=TS.data(:,selection);
     time=TS.time;
     name=TS.name{selection};
 else
     return
end
prompt = {'Enter embedding dimension:',...
'Enter delay (in samples):'};
dlg_title = 'Create attractor using method of delay';
num_lines= 1;
def     = {'5','1'};
answer  = inputdlg(prompt,dlg_title,num_lines,def);
if ~isempty(answer)
    Emb=str2num(answer{1});
    delay=str2num(answer{2});
else
    return
end
ATTRACTOR.data=embed(X,delay,Emb);
ATTRACTOR.time=time(1:length(ATTRACTOR.data(:,1)));
for i=1:length(ATTRACTOR.data(1,:))
    ATTRACTOR.name{i}=[name '_md' num2str(i)];
end

	
GSD_GLOBALS.en_dis.attractorpresent=1;
gui_en_dis;


function Y=embed(x,delay,dimension);
% last modified 15.12.04

L=dimension;
N=length(x);
K=N-delay*(L-1);  %% K must be positive!!!
if K<1
    error('Wrong parameters. Cancelled');
    return
end
Y=zeros(L,K);
for i=1:L
    Y(i,:)=x(1+delay*(i-1):delay*(i-1)+K)';
end
Y=Y';