jingweimo的个人博客分享 http://blog.sciencenet.cn/u/jingweimo

博文

Matlab: modeliing light mitigation in biological tissues

已有 2483 次阅读 2017-8-7 00:46 |系统分类:科研笔记

%YL, 08/06/2017

filename = 'example';
np = 1e6;
layers_matrix = [1, 0.1 100 0.9 50];
n_above = 1;
n_below = 1;
dz = 0.005;
dr = 0.01;
nz = 200;
nr = 200;
na = 1;
h = create_MCML_input_file(filename,np,layers_matrix,n_above,n_below,...
   dz,dr,nz,nr,na);
disp([h.input_filename,' file created']);
dos(['Mcml.exe ' h.input_filename '&']);
while isempty(dir(h.output_filename)) %terminate upon simulation done
   pause(1);
end
disp('Simulation done!');

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%Parameter Space

%read output
fid = fopen(h.output_filename);
for i=1:14                      % Tar bort onödiga rader
   tline = fgetl(fid);
end
step_size = fscanf(fid,'%g'); %[dz, dr]
tline = fgetl(fid);
step_num = fscanf(fid,'%g'); %[nz,nr,na]
%RAT
rad='abc';                      
crit='RAT'; %reflectance, absorption and transmittance
while rad~=crit
   tline = fgetl(fid);
   if length(tline)>=3
       rad=tline(1:3);
   end
end
spec_refl = fscanf(fid,'%g');
tline = fgetl(fid);              
diff_refl = fscanf(fid,'%g');    
tline = fgetl(fid);              
abs_frac = fscanf(fid,'%g');    
tline = fgetl(fid);              
trans_frac = fscanf(fid,'%g');
%A_l
for i=1:3
   tline = fgetl(fid);          
end
abs_layer = fscanf(fid,'%g');  
%A_z
tline = fgetl(fid);  
abs_z = fscanf(fid,'%g');
%Rd_r
tline = fgetl(fid);
refl_r = fscanf(fid,'%g');
%Rd_a
tline = fgetl(fid);
refl_a = fscanf(fid,'%g');
%trans_r
tline = fgetl(fid);
trans_r = fscanf(fid,'%g');
%trans_a
tline = fgetl(fid);
trans_a = fscanf(fid,'%g');
%A_rz
for i=1:6
   tline = fgetl(fid);          
end
abs_rz = fscanf(fid,'%g');
abs_rz = reshape(abs_rz,step_num(1),step_num(2));
%refl_ra
for i=1:6
   tline = fgetl(fid);          
end
refl_ra = fscanf(fid,'%g');
refl_ra = reshape(refl_ra,step_num(2),step_num(3));
%trans_ra
for i=1:6
   tline = fgetl(fid);          
end
trans_ra = fscanf(fid,'%g');
trans = reshape(refl_ra,step_num(2),step_num(3));
%compute fluence rate: A(r,z)/mua
for i=1:step_num(1)
   for j=1:step_num(2)
       flod(i,j) = abs_rz(i,j)/layers_matrix(2);
   end
end
f_rz=flod;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%plotting
figure(1); %Rd vs r
plot(linspace(0,nr*dr,nr),refl_r,'-o','linewidth',1);
set(gca,'YScale','log');
figure(2); %f_rz vs z
plot(linspace(0,nz*dz,nz),f_rz(:,1),'-o','linewidth',1);
set(gca,'YScale','log');


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%% Comparsion with analytical solutions under structured illumination

mua = 0.2;
mus = 4;
Fx = linspace(0.2,3.6,18);
Rd = Rd_fx(mua,mus,Fx);

layers_matrix = [1.35, 0.2, 10*mus, 0.9, 5];
dr = 0.01;
dz = 0.01;
nr = 500;
nz = 500;
s = MCML('SI_test',5e6,layers_matrix,1,1,dz,dr,nz,nr,1);

refl = s.refl_r;

refl_MC = hankelTrans(refl,Fx,dr);

figure
plot(Fx, Rd, '-rd','linewidth',1.5); hold on;
plot(Fx, refl_MC, '-cs','linewidth',1.5);
xlabel('Spatial frequency (mm^{-1})');
ylabel('Reflectance');
legend('Analytical','Monte Carlo');


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%Comparsion with Finite Element



https://wap.sciencenet.cn/blog-578676-1069884.html

上一篇:Matlab: a simple DOT steady-state forward solver
下一篇:Proof on the Dirac Delta function related relationships
收藏 IP: 68.48.108.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-29 08:21

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部