24小时热门版块排行榜    

查看: 2277  |  回复: 9
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

lvubaby

木虫 (正式写手)

[求助] 二维粒子分布的分形维数 已有1人参与

大家好,我得到了一个二维的粒子分布,想计算他的分形维数。采用回转半径法,输入粒子坐标,编了一个小程序,可是计算得到的分形维数为2.262大于2。理论上讲二维图像下的分形维数应该小于2啊,是哪里出错了,请各位大神指点。
程序为:
clc
clear
dim=128;
load final_paticle_distribution_2D.txt

particle_num=size(final_paticle_distribution_2D,1);
c1=final_paticle_distribution_2D(:,1);
c2=final_paticle_distribution_2D(:,2);

figure(1)
plot(c1,c2,'.')

%%求得重心坐标
mc1=round(sum(c1)/particle_num);
mc2=round(sum(c2)/particle_num);

num=zeros(dim,1);%粒子数目
r=zeros(dim,1);%半径
s=zeros(particle_num,1);%粒子与重心距离

for i=1:particle_num
    %%计算粒子与质心的距离
    s(i)=sqrt((c1(i)-mc1)^2+(c2(i)-mc2)^2);
   for j=1:dim
       r(j)=j-0.5;
       if s(i)<=r(j)
           num(j)=num(j)+1;
       end
   end
end

r_num=[r,num];
save('radius_particlenum.txt', 'r_num','-ASCII')


%%将不含有粒子的空间删去
%%外侧
ii=1;
for jj=1:dim-1
    if num(jj)==num(jj+1)
        num_zero_ind_high(ii)=jj+1;
        ii=ii+1;
    end
end
num(num_zero_ind_high)=[];
r(num_zero_ind_high)=[];

%%内侧
particle_ind=find(num);

particle_num=num(particle_ind);
particle_r=r(particle_ind);

log_num=log(particle_num);
log_r=log(particle_r);

fitobject=fit(log_r,log_num,'poly1')
figure(2);
plot(log_r,log_num,'o');

二维粒子分布的分形维数
2D particle distribution.png
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

海风吹
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

alorsmail

铁杆木虫 (著名写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
lvubaby: 金币+20, ★★★★★最佳答案 2014-04-25 07:52:38
引用回帖:
3楼: Originally posted by lvubaby at 2014-04-20 16:39:55
不好意思,上次忘了上传,这次贴上
http://pan.baidu.com/s/14DXE2...

你好,我找到问题所在了,
你的程序没有问题。之所以出错,是因为一个细节:
         重心坐标
你这里用的是平均值,但是这个并非真正的坐标。
所以建议用 “核密度估计 ” Kernel density estimation 来找更加合理的重心
比如
=================================
[F,XI]=ksdensity(c1) ;
mc1 = floor( XI(find(F==max(F))) ) ; %#ok<*FNDSB>
[F,XI]=ksdensity(c2) ;
mc2 = floor( XI(find(F==max(F))) ) ;
=================================
然后运行程序,得到的分形维数是  1.313 (大致是这个数值,每次运行可能有变化,这个是由于MATLAB的线性逼近引起的)
这个结果比较合理,
用Box counting得到的fractal dimension 是 1.46左右。考虑到用盒子的误差,你的结果应该是对的。
所以,恭喜你!
6楼2014-04-25 05:37:27
已阅   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 10 个回答

alorsmail

铁杆木虫 (著名写手)

最好能提供样本文件,这样方便调试
2楼2014-04-20 04:06:51
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

lvubaby

木虫 (正式写手)

引用回帖:
2楼: Originally posted by alorsmail at 2014-04-20 04:06:51
最好能提供样本文件,这样方便调试

不好意思,上次忘了上传,这次贴上
http://pan.baidu.com/s/14DXE2
海风吹
3楼2014-04-20 16:39:55
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

alorsmail

铁杆木虫 (著名写手)

【答案】应助回帖

抱歉没有时间仔细看你的程序,
我这里有个现成的,计算下来,你可以参考一下
FD=1.8736
http://1000eb.com/vuu6
文件密码,见PM
4楼2014-04-22 17:50:23
已阅   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见