資源簡介
本人自己編程的一個計算分形維數的程序,很好用
代碼片段和文件信息
function?DLAmodel(NsumWstep)?????????????%定義dla函數,Nsum為所生成絮體包含的顆粒數,Wstep為計算過程中所采取的步長
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%本程序內變量的定義??????????????????????????????%%
%%radius為顆粒半徑,release為起始釋放半徑??????????%%??
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
radius=0.5;?????????????????????????????????????????%%顆粒半徑
release=2;??????????????????????????????????????????%%起始釋放半徑
L=200;
Xhalf=floor(L/2);
Yhalf=Xhalf;
Zhalf=Xhalf;
n=1;????????????????????????%粒子計數
N(1)=1;
N(Xhalf)=0;
p(1:)=[Xhalf?Yhalf?Zhalf];
szpoints=zeros(LLL);????????????%%網格點陣
szpoints(XhalfYhalfZhalf)=1;????%%種子位置標志
%%釋放初始粒子????
(NsumWstep)?????????????%定義dla函數,Nsum為所生成絮體包含的顆粒數,Wstep為計算過程中所采取的步長????????????????????????????
theta=2*pi*rand;
gama=pi*rand;
M=p(1:)+Wstep*[cos(theta)?sin(theta)?cos(gama)];
while?n ????theta=2*pi*rand(1);?????????%%粒子隨機移動
????gama=pi*rand(1);
????%Wstep=Wstep*[2*rand(1)-1?2*rand(1)-1?2*rand(1)-1];
????step=Wstep*[sin(theta)?cos(theta)?cos(gama)];
????M=M+step;
????T=round(M);
????if?(M(1)-Xhalf)^2+(M(2)-Yhalf)^2+(M(3)-Zhalf)^2>(release+15)^2?????%%判斷是否逃逸
????????theta=2*pi*rand;????????
????????gama=pi*rand;
????????M=p(1:)+release*[cos(theta)?sin(theta)?cos(gama)];
????elseif?szpoints((T(1)-1)T(2)T(3))+szpoints((T(1)+1)T(2)T(3))+szpoints(T(1)(T(2)-1)T(3))+szpoints(T(1)(T(2)+1)T(3))+szpoints(T(1)T(2)(T(3)-1))+szpoints(T(1)T(2)(T(3)+1))>0&szpoints(T(1)T(2)T(3))~=1????%%判斷是否凝結
???????????n=n+1;
???????????szpoints(T(1)T(2)T(3))=1;
???????????p(n:)=T;???????????%存儲凝聚顆粒的球心坐標。
???????????s=sqrt((M(1)-Xhalf)^2+(M(2)-Yhalf)^2+(M(3)-Zhalf)^2);
???????????k=round(s)+1;
???????????N(k)=N(k)+1;
???????????if?s>release?????%%調整釋放半徑
??????????????release=s+3;
???????????end
?????elseif?szpoints(T(1)T(2)T(3))==1????????????????%%檢查是否出現漏檢即運動一步后進入粒子內部的情況.
????????????theta=2*pi*rand(1);?????????
????????????gama=pi*rand(1);
????????????M=p(1:)+Wstep*[cos(theta)?sin(theta)?cos(gama)];
????
- 上一篇:MATLAB語言編寫空間后方交會-空間前方交會程序
- 下一篇:模式識別pca的設計
評論
共有 條評論