tuttelikz

ang_dist [Biomedical Optics]

Sep 4th, 2017
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 3.32 KB | None | 0 0
  1. clear all; close all; clc;
  2. %%
  3. lambda = 400*1e-9;
  4. rayleghCondition = 0.5*lambda;
  5. n_s = 1.57;
  6. n_b = 1.33;
  7. w_s = 1.05*1e3;
  8. w_b = 1.0*1e3;
  9. concentration = 0.002;
  10.  
  11. dSphere = 50:100:6500;
  12. diameter = zeros(1,length(dSphere));
  13. itera = 0;
  14.  
  15. for iter = 1:length(dSphere)
  16.     diameter(iter) = dSphere(iter)*1e-9;
  17.     radius(iter) = diameter(iter)/2;
  18.     %%
  19.     k = 2*pi*n_b/lambda;
  20.     x(iter) = k*radius(iter);
  21.     n_rel = n_s/n_b;
  22.     y = n_rel*x(iter);
  23.     % Calculate the summations
  24.     err = 1e-8;
  25.     Qs = 0;
  26.     gQs = 0;
  27.     %%
  28.    
  29.     for n = 1:100000
  30.         Snx = sqrt(pi*x(iter)/2)*besselj(n+0.5,x(iter));
  31.         Sny = sqrt(pi*y/2)*besselj(n+0.5,y);
  32.         Cnx = -sqrt(pi*x(iter)/2)*bessely(n+0.5,x(iter));
  33.         Zetax = Snx+i*Cnx;
  34.         % Calculate the first-order derivatives
  35.         Snx_prime = - (n/x(iter))*Snx+sqrt(pi*x(iter)/2)*besselj(n-0.5,x(iter));
  36.         Sny_prime = - (n/y)*Sny+sqrt(pi*y/2)*besselj(n-0.5,y);
  37.         Cnx_prime = - (n/x(iter))*Cnx-sqrt(pi*x(iter)/2)*bessely(n-0.5,x(iter));
  38.         Zetax_prime = Snx_prime + i*Cnx_prime;
  39.         an_num = Sny_prime*Snx-n_rel*Sny*Snx_prime;
  40.         an_den = Sny_prime*Zetax-n_rel*Sny*Zetax_prime;
  41.         an = an_num/an_den;
  42.         bn_num = n_rel*Sny_prime*Snx-Sny*Snx_prime;
  43.         bn_den = n_rel*Sny_prime*Zetax-Sny*Zetax_prime;
  44.         bn = bn_num/bn_den;
  45.         Qs1 = (2*n+1)*(abs(an)^2+abs(bn)^2);
  46.         Qs = Qs+Qs1;
  47.         if n > 1
  48.             gQs1 = (n-1)*(n+1)/n*real(an_1*conj(an)+bn_1*conj(bn))+(2*n-1)/((n-1)*n)*real(an_1*conj(bn_1));
  49.             gQs = gQs+gQs1;
  50.         end
  51.         an_1 = an;
  52.         bn_1 = bn;
  53.         if abs(Qs1)<(err*Qs) & abs(gQs1)<(err*gQs)
  54.             break;
  55.         end
  56.     end
  57.     %%
  58.     QsArr(iter) = (2/x(iter)^2)*Qs;
  59.    
  60.     if diameter(iter) < rayleghCondition
  61.         itera = itera + 1;
  62.         QsRay(itera) = 8*x(itera)^4/3*abs((n_rel^2 - 1)/(n_rel^2 + 2))^2;
  63.     end
  64.    
  65.     gQsArr(iter) = (4/x(iter)^2)*gQs;
  66.     g(iter) = gQsArr(iter)/QsArr(iter);
  67.     alpha(iter) = acosd(g(iter));
  68.     vol_s(iter) = 4*pi/3*radius(iter)^3;
  69.     N_s = concentration*w_b/(vol_s(iter)*w_s);
  70.     sigma_s(iter) = QsArr(iter)*pi*radius(iter)^2;
  71.     mu_s(iter) = N_s*sigma_s(iter);
  72.     mu_s_prime(iter) = mu_s(iter)*(1-g(iter));
  73.     fprintf('%d\n',iter);
  74.    
  75.      dndomega1(iter) = 0.06225*(1+0.835*g(iter)*g(iter));
  76.      dndomega2(iter) = (1-g(iter)*g(iter))/(4*pi*(1+g(iter)*g(iter)-2*g(iter)*g(iter))^1.5);
  77. end
  78.  
  79. figure()
  80. loglog(x,QsArr);
  81. hold on
  82. loglog(x(1:itera),QsRay);
  83. title('Scattering efficiency versus x=ka')
  84. xlabel('x = ka');
  85. ylabel('Scattering efficiency');
  86. grid on
  87. hold off
  88.  
  89. figure()
  90. semilogx(x,g);
  91. title('Anisotropy g versus x=ka')
  92. xlabel('x = ka');
  93. ylabel('Anisotropy g');
  94. grid on
  95.  
  96. figure()
  97. semilogx(x,sigma_s);
  98. title('Scattering cross section versus x=ka')
  99. xlabel('x = ka');
  100. ylabel('Scattering cross section');
  101. grid on
  102.  
  103.  
  104. figure()
  105. semilogy(alpha,dndomega1);
  106. title('Scattering in pure sea water')
  107. xlabel('Angle alpha');
  108. ylabel('dN/dOmega');
  109. grid on
  110.  
  111. figure()
  112. semilogy(alpha,dndomega2);
  113. title('Henyey-Greenstein function :')
  114. xlabel('Angle alpha');
  115. ylabel('dN/dOmega');
  116. grid on
  117.  
  118.  
  119. % hold on
  120. % loglog(x(1:itera),QsRay);
  121.  
  122.  
  123.  
  124.  
  125. % Output results
  126. % {'wavelength(nm)','Qs ( - )','g (-)','mus (/cm)','mus_prime(/cm)';lambda*1e9,Qs,g,mu_s*1e-2,mu_s_prime*1e-2}
Advertisement
Add Comment
Please, Sign In to add comment