資源簡介
時間序列李亞普諾夫指數(shù)完整程序,網(wǎng)上的缺少相空間重構(gòu)函數(shù),我將它補(bǔ)全了。

代碼片段和文件信息
function?lambda_1=lyapunov(dataNmtauP)
%??該函數(shù)用來計(jì)算時間序列的最大Lyapunov?指數(shù)--Wolf?方法
%??m:?嵌入維數(shù)
%??tau:時間延遲
%??data:時間序列
%??N:時間序列長度
%??P:時間序列的平均周期選擇演化相點(diǎn)距當(dāng)前點(diǎn)的位置差,即若當(dāng)前相點(diǎn)為I,則演化相點(diǎn)只能在|I-J|>P的相點(diǎn)中搜尋
%??lambda_1:返回最大lyapunov指數(shù)值
min_point=1??;?%&&要求最少搜索到的點(diǎn)數(shù)
MAX_CISHU=5?;??%&&最大增加搜索范圍次數(shù)
%FLYINGHAWK
%???求最大、最小和平均相點(diǎn)距離
????max_d?=?0;?????????????????????????????????????????%最大相點(diǎn)距離
????min_d?=?1.0e+100;??????????????????????????????????%最小相點(diǎn)距離
????avg_dd?=?0;
????Y=reconstitution(dataNmtau);????????????????????%相空間重構(gòu)
????M=N-(m-1)*tau;?????????????????????????????????????%重構(gòu)相空間中相點(diǎn)的個數(shù)
????for?i?=?1?:?(M-1)
????????for?j?=?i+1?:?M
????????????d?=?0;
????????????for?k?=?1?:?m
????????????????d?=?d?+?(Y(ki)-Y(kj))*(Y(ki)-Y(kj));
????????????end
????????????d?=?sqrt(d);
????????????if?max_d????????????????max_d?=?d;
????????????end
????????????if?min_d?>?d
???????????????min_d?=?d;
????????????end
????????????avg_dd?=?avg_dd?+?d;
????????end
????end
????avg_d?=?2*avg_dd/(M*(M-1));????????????????%平均相點(diǎn)距離
????
????dlt_eps?=?(avg_d?-?min_d)?*?0.02?;?????????%若在min_eps~max_eps中找不到演化相點(diǎn)時,對max_eps的放寬幅度
????min_eps?=?min_d?+?dlt_eps?/?2?;????????????%演化相點(diǎn)與當(dāng)前相點(diǎn)距離的最小限
????max_eps?=?min_d?+?2?*?dlt_eps??;???????????%&&演化相點(diǎn)與當(dāng)前相點(diǎn)距離的最大限
????
%?????從P+1~M-1個相點(diǎn)中找與第一個相點(diǎn)最近的相點(diǎn)位置(Loc_DK)及其最短距離DK
????DK?=?1.0e+100;?????????????????????????????%第i個相點(diǎn)到其最近距離點(diǎn)的距離
????Loc_DK?=?2;????????????????????????????????%第i個相點(diǎn)對應(yīng)的最近距離點(diǎn)的下標(biāo)
????for?i?=?(P+1):(M-1)????????????????????????%限制短暫分離,從點(diǎn)P+1開始搜索
????????d?=?0;
????????for?k?=?1?:?m
????????????d?=?d?+?(Y(ki)-Y(k1))*(Y(ki)-Y(k1));
????????end
????????d?=?sqrt(d);
????????if?(d??min_eps)?
???????????DK?=?d;
???????????Loc_DK?=?i;
????????end
????end
%?????以下計(jì)算各相點(diǎn)對應(yīng)的李氏數(shù)保存到lmd()數(shù)組中
%?????i?為相點(diǎn)序號,從1到(M-1),也是i-1點(diǎn)的演化點(diǎn);Loc_DK為相點(diǎn)i-1對應(yīng)最短距離的相點(diǎn)位置,DK為其對應(yīng)的最短距離
%?????Loc_DK+1為Loc_DK的演化點(diǎn),DK1為i點(diǎn)到Loc_DK+1點(diǎn)的距離,稱為演化距離
%?????前i個log2(DK1/DK)的累計(jì)和用于求i點(diǎn)的lambda值
????sum_lmd?=?0?;??????????????????????????????%?存放前i個log2(DK1/DK)的累計(jì)和
????for?i?=?2?:?(M-1)??????????????????????????%?計(jì)算演化距離??????
????????DK1?=?0;
????????for?k?=?1?:?m
????????????DK1?=?DK1?+?(Y(ki)-Y(kLoc_DK+1))*(Y(ki)-Y(kLoc_DK+1));
????????end
????????DK1?=?sqrt(DK1);
????????old_Loc_DK?=?Loc_DK?;??????????????????%?保存原最近位置相點(diǎn)
????????Loc_DK=DK;
%?????計(jì)算前i個log2(DK1/DK)的累計(jì)和以及保存i點(diǎn)的李氏指數(shù)
????????if?(DK1?~=?0)&&(?DK?~=?0)
???????????sum_lmd?=?sum_lmd?+?log(DK1/DK)?/log(2);
????????end
????????lmd(i-1)?=?sum_lmd/(i-1);
%?????以下尋找i點(diǎn)的最短距離:要求距離在指定距離范圍內(nèi)盡量短,與DK1的角度最小
????????point_num?=?0??;?%?&&在指定距離范圍內(nèi)找到的候選相點(diǎn)的個數(shù)
????????cos_sita?=?0??;?%&&夾角余弦的比較初值?——要求一定是銳角
????????zjfwcs=0?????;%&&增加范圍次數(shù)
?????????while?(point_num?==?0)
???????????%?*?搜索相點(diǎn)
????????????for?j?=?1?:?(M-1)
????????????????if?abs(j-i)?<=(P-1)??????%&&候選點(diǎn)距當(dāng)前點(diǎn)太近,跳過!
???????????????????continue;?????
????????????????end
????????????????
????????????????%*計(jì)算候選點(diǎn)與當(dāng)前點(diǎn)的距離
????????????????dnew?=?0;
????????????????for?k?=?1?:?m
??????????????????
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????5567??2012-12-06?20:30??lyapunov.m
?????文件????????294??2009-10-27?10:07??reconstitution.m
-----------?---------??----------?-----??----
?????????????????5861????????????????????2
評論
共有 條評論