|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
%本程序利用数每个盒子里的点数来计算多重分形
t=1:1:1000;
f=sin(0.03*t);
f=(f-min(f))/(max(f)-min(f));
delta=0.05;%盒子边长
numgrid=ceil(1/delta);%网格列数(此时行数与列数相等)
buju=1000*delta;%为了编程的简便,在此取数据长度为1000,这样每段的数据点为1000*b,
N_delta=zeros(numgrid,1);
N_i=0;
for m=1:1:numgrid
if m==1
y=f(1:buju);
else
y=f((m-1)*buju:m*buju);
end
maxy=max(y);
miny=min(y);
c=floor(maxy/delta);
d=floor(miny/delta);
if mod(maxy,delta)==0
N_delta=abs(c-d);
else
N_delta=1+abs(c-d);%统计每一列网格里的盒子个数
end
N_m_i=zeros(1,N_delta);
for s=1:1:N_delta
for i=1:1:size(y,2)
if (y(i)>=(d+s-1)*delta) && (y(i)<=((d+s)*delta))%统计每列网格里的每个盒子内的点数
N_m_i(1,s)=N_m_i(1,s)+1;%
end
end
end
N_i=[N_i N_m_i(1,:)];
end
lieshu=size(N_i,2);
P=N_i(1,2:lieshu)./sum(sum(N_i(1,2:lieshu)));%计算每个盒子内的点数所占的概率
u=0;
for q=0:0.05:20%只是q为什么不能为负的呢?!
u=u+1;
N_q_delta=sum(sum(P.^q));
D(u)=(1/(q-1))*(log(N_q_delta)/log(delta));
end
q=0:0.05:20;
plot(q,D)
本程序的那个q取正值时,运行不出错,效果也还可以,但是为什么取不了负值呢?当取负值时P.^q为变得非常大,以致无穷大?那为什么有些文章却可以呢?感觉我的程序没有问题啊,希望大家能帮忙,谢谢 |
|