?? cao.m
字號(hào):
function embed_m = cao(data,tau)
% 該程序計(jì)算時(shí)間序列的嵌入維數(shù)
% data為原始數(shù)據(jù),列向量,n行1列
% min_m,max_m分別為最小和最大嵌入維數(shù)
% tau為時(shí)間延遲
% 作者: 華清 武漢理工大學(xué) 郵箱 huaing1982@163.com
% 程序調(diào)試段
% clc
% clear
embed_m=[];
min_m=1;
max_m=15;
% tau = 1;
% 程序調(diào)試段
N=length(data);
k=1;
%-------------------------------------------------------
for m=min_m:max_m
Y=reconstitution(data,N,m,tau);%相重構(gòu)
[m,M]=size(Y);
for i=1:N-m*tau
%-----計(jì)算第i個(gè)向量與每個(gè)向量的距離存于d(j)中--------
for j=1:N-m*tau
d(j)=norm(Y(:,i)-Y(:,j),inf);
end
%-----求距離最短向量的下標(biāo)-----------
temp=sort(d);
D(i,1)=i; %D的第一列為向量序號(hào)
temp1=find(temp>0);
temp2=find(d==temp(temp1(1)));
D(i,2)=temp2(1); %第二列為與之對(duì)應(yīng)的最短距離向量的序號(hào)
D(i,3)=temp(temp1(1));%第三列為與之對(duì)應(yīng)的最短距離
%-----------計(jì)算a(i,m)-----------------------
Y1=[Y(:,i);data(m*tau+i)];
Y2=[Y(:,D(i,2));data(D(i,2)+m*tau)];
ad(i)=norm(Y1-Y2,inf)/D(i,3);
clear d Y1 Y2 temp temp1 temp2
end
%---------------求E(d)-----------------
E(k,1)=m;
E(k,2)=sum(ad)/(N-m*tau);
% k=k+1;
%---------------求E*(d)-----------------
En(k,1)=m;
En1(k,1)=m;
for kk=1:N-m*tau
dd(kk)=abs(data(D(kk,1)+m*tau)-data(D(kk,2)+m*tau));
%dd1(kk)=abs(data(D(kk,1)+1)-data(D(kk,2)+1));
end
En(k,2)=sum(dd)/(N-m*tau);
% En1(k,2)=sum(dd1)/(N-m*tau);
k=k+1;
clear D
end
%-----------求E1(d)-------------------
for i=1:(max_m-min_m)
E1(i,1)=E(i,1);
E1(i,2)=E(i+1,2)/E(i,2);
end
%-----------求E2(d)-------------------
for i=1:(max_m-min_m)
E2(i,1)=En(i,1);
E2(i,2)=En(i+1,2)/En(i,2);
end
%-----------畫圖------------------------
% figure(1)
% plot(E1(:,1),E1(:,2),'-bs',E2(:,1),E2(:,2),'-r*');xlabel('維數(shù)');ylabel('E1(d)&E2(d)');
% grid on
% disp('-----------求使Ed最小的嵌入維數(shù)-------------------');
min_E=min(En(:,2));
for i=1:(max_m-min_m)
if En(i,2) == min_E
embed_m=En(i,1);
break
end
end
% embed_m
%
% min_E1=min(En1(:,2));
% for i=1:(max_m-min_m)
% if En1(i,2)==min_E1
% embed_m1=En1(i,1);
% break
% end
% end
% embed_m1
% figure(2)
% plot(En(:,1),En(:,2),En1(:,1),En1(:,2),'r');xlabel('維數(shù)');ylabel('E*(d)');
% grid on
%
% disp('--------cao法求m---------')
% e=0.1;embed_m=0;
% h=1:length(E1(:,2))-1;
% delt=abs(E1(h,2)-E1(h+1,2));
% num=find(deltdelt2)&(delt2>delt3)&(delt2
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -