資源簡介
多重分形譜計算程序matlab,可用于股市分析等。有問題希望大家及時反饋給我。

代碼片段和文件信息
function?[f_aAlpha]=AlphaR(Datarintervalqinterval)
%[f_aa]=AlphaR(Datarintervalqinterval)
%AlphaR為計算多重分形譜的函數
%Data為輸入樣本數據列向量第一列為數據
%rinterval為尺子取值范圍rinterval=[rminrmax];
%rmin為大于等于2的正整數,最大為數據長度
%qinterval為q取值范圍qinterval=[qminq步長qmax];
%%?數據準備
L=length(Data);?%?總數據個數
%尺子參數
rmin=rinterval(1);??????????%?尺子區間
rmax=rinterval(2);
rno=rmax-rmin+1;????????????%?尺子個數
%q參數
qmin=qinterval(1);??????????%?q的范圍
qd=qinterval(2);????????????%?步長
qmax=qinterval(3);
qno=fix((qmax-qmin)/qd+1);??%?q的個數
c=zeros(rno1);
i=1;
for?r=rmin:rmax?????%?每組區間長度
????c(i1)=mod(Lr);
????i=i+1;
end
c=c‘;?????????????????%?計算不能被邊長r整除的余數
count=L-c;
format?long
modify=1;
modifying=zeros(rno1);
r=rmin;???????????????%?尺子初始長度
%%?進入配分函數主循環
%計算每區間質量值
for?i=1:rno
????B=Data(1:count(i)1);???%?取出每個尺子對應的所有數據
????ino=length(B)/r;??%?尺子對應的區間數interval?no
????Tssum=sum(B);
????U=reshape(Brino);?%?每列保存每區間全部數據
????T=sum(U)./Tssum;??%?每個區間的質量
????T=T‘;
????TT(1:length(T)i)=T;??%?按列保存不同區間的T值%%%%%%%%%%%%preallocate
????modifying(modify1)=ino;?%?每個尺子對應區間數(T值的個數)
????r=r+1;
????if?r>=?rmin+rno???%?自定義項,“※-3”
????????break;????????%?邊長初始限制,循環終止
????end
????modify=modify+1;
end
TT=nonzeros(TT);
to_modifying=zeros(rno1);
for?cugb=1:rno
????to_modifying(cugb1)=sum(modifying(1:cugb));?%?第i個尺子累計有T值個數的總數
end
j=1;
%?q?為任意數,這里取1到n,為n,與?k取值保持一致,q過大,計算機無法
%識別,默認為無窮大,q過小,結果接近0,則意義不明確
XX=zeros(rnoqno);
for?q=qmin:qd:qmax
????for?k=1:rno
????????if?k==1
????????????X=TT(1:to_modifying(k1)1).^q;
????????else
????????????X=TT(to_modifying(k-11)+1:to_modifying(k1)1).^q;
????????end
????????t=sum(X);
????????XX(kj)=t;?%?第k個尺子第j個q的配分函數,Xq(ξ)這里用到兩個循環,即考慮到了冪函數,又需考慮求和
????end
????j=j+1;
end
%%?譜函數主循環
side_length=?rmin:rmax;??%?尺子長度
side_length=side_length‘;
q=qmin:qd:qmax;????%?q分層參數
m=1;
slope=zeros(qno1);
for?i=1:qno
????s=XX(:i);?%?每一層所有尺子的配分函數
????b=polyfit(log(side_length)log(s)1);??%?在對數尺度下計算斜率一階擬合
????slope(m1)=b(11);%??這里的Slope即為質量指數,τ(q)
????m=m+1;
end
%plot(q‘slope)????%?若τ(q)-q為線性關系,則為單分形;若τ(q)-q是凸函數,
Alpha=diff(slope)./diff(q‘);???%?奇異指數Alpha
q=q‘;
f_a=Alpha.*q(2:end)-slope(2:end);?%奇異譜函數
%%?畫圖
%?figure
%?plot(Alphaf_a‘o‘)
%?xlabel(‘α‘‘FontSize‘12);
%?ylabel(‘f(α)‘‘FontSize‘12);
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2013-07-23?13:45??Charles?Li?Multifractal1.0\
?????文件????????2698??2013-07-22?16:14??Charles?Li?Multifractal1.0\AlphaR.m
?????文件?????????543??2013-07-23?13:53??Charles?Li?Multifractal1.0\Charles?Li?Multifractal1.0使用說明.txt
?????文件?????????700??2013-07-19?11:10??Charles?Li?Multifractal1.0\MulDataGenerator.m
?????文件????????1324??2013-07-22?13:38??Charles?Li?Multifractal1.0\MulGetdate.m
?????文件????????1214??2013-07-22?15:20??Charles?Li?Multifractal1.0\MultifractalRE.m
?????文件?????????895??2013-07-22?16:31??Charles?Li?Multifractal1.0\sc
?????文件??????205281??2013-07-19?16:22??Charles?Li?Multifractal1.0\TData.mat
?????文件??????641211??2013-07-19?16:27??Charles?Li?Multifractal1.0\TData1.mat
- 上一篇:汽車懸架的半主動控制MATLAB仿真
- 下一篇:關于MSK的matlab源代碼
評論
共有 條評論