24小时热门版块排行榜    

查看: 2279  |  回复: 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

铁杆木虫 (著名写手)

最好能提供样本文件,这样方便调试
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的回帖

alorsmail

铁杆木虫 (著名写手)

引用回帖:
3楼: Originally posted by lvubaby at 2014-04-20 16:39:55
不好意思,上次忘了上传,这次贴上
http://pan.baidu.com/s/14DXE2...

抱歉,刚刚测试了一下MATLAB上面的那个分形函数,似乎有问题
你参考一下,
我有空的话,也会仔细看一下到底是哪里的问题,
不好意思!
5楼2014-04-22 21:33:37
已阅   关注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的回帖

lvubaby

木虫 (正式写手)

引用回帖:
6楼: Originally posted by alorsmail at 2014-04-25 05:37:27
你好,我找到问题所在了,
你的程序没有问题。之所以出错,是因为一个细节:
         重心坐标
你这里用的是平均值,但是这个并非真正的坐标。
所以建议用 “核密度估计 ” Kernel density estimation 来找更 ...

你真是大牛啊,按照你说的方法改后,结果是1.313.文献中的结果是1.38+-0.06. 非常温和. 多谢指教!!!
海风吹
7楼2014-04-25 07:54:25
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

alorsmail

铁杆木虫 (著名写手)

引用回帖:
7楼: Originally posted by lvubaby at 2014-04-25 07:54:25
你真是大牛啊,按照你说的方法改后,结果是1.313.文献中的结果是1.38+-0.06. 非常温和. 多谢指教!!!...

不客气,实际上,这里还有一个更小的细节 :
重心坐标并不一定要取整值,这里用整值只是为了保持和原数据一直。
如果直接用计算ksdensity的计算结果的话,
=================================
[F,XI]=ksdensity(c1);
mc1 = ( XI(find(F==max(F))) ); %#ok<*FNDSB>
[F,XI]=ksdensity(c2);
mc2 = ( XI(find(F==max(F))) );
=================================
得到的将是 1.353 (1.32, 1.385),
8楼2014-04-25 12:24:15
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

hailonghu

新虫 (正式写手)

引用回帖:
4楼: Originally posted by alorsmail at 2014-04-22 17:50:23
抱歉没有时间仔细看你的程序,
我这里有个现成的,计算下来,你可以参考一下
FD=1.8736
http://1000eb.com/vuu6
文件密码,见PM

您好,请问密码在哪里呀,怎么找不到呢,谢谢!
9楼2014-08-08 16:04:24
已阅   关注TA 给TA发消息 送TA红花 TA的回帖

hailonghu

新虫 (正式写手)

引用回帖:
4楼: Originally posted by alorsmail at 2014-04-22 17:50:23
抱歉没有时间仔细看你的程序,
我这里有个现成的,计算下来,你可以参考一下
FD=1.8736
http://1000eb.com/vuu6
文件密码,见PM

您好,请问文件密码是什么,怎么找不到呢,谢谢
10楼2014-08-08 16:05:36
已阅   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 lvubaby 的主题更新
信息提示
请填处理意见