请大家帮忙给看下个计算广义维数的程序,为什么q取不了负值啊
%本程序利用数每个盒子里的点数来计算多重分形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=;
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为变得非常大,以致无穷大?那为什么有些文章却可以呢?感觉我的程序没有问题啊,希望大家能帮忙,谢谢 哈哈,发现问题了,原来矩阵P里有0元素,这样当q取负值时,相当于除0,这样就出错了。不过感觉这个论坛人气不旺啊,对于求助的问题都没有反应,哎…… 我以前也遇到过这类问题哦 我用这个程序进行仿真时,得到的结果只有q=0时有维数,其他的q值下维数都是1,不知道是我数据的原因还是程序中设置的网格大小不合适,请帮忙看一下qq:756047801
页:
[1]