米氏散射是光与比其波长相近或更大的微粒(如气溶胶、雾滴或尘埃)相互作用时产生的散射现象。与瑞利散射相比,它能够解释更大尺度的粒子引起的光散射,适用于描述云、雾等自然现象。米氏散射会使光在各个方向散射,且不同波长的光受影响程度不同,但不像瑞利散射那样明显随波长变化。其数学描述由米教授(Gustav Mie)提出,利用复杂的球谐函数和电磁理论为基础,是气象学和光学的重要工具。

Light scattering of colloids | ViaDean

参考文献

🗯️MATLAB片段

米氏散射(Mie scattering)是光与球形颗粒相互作用时的散射现象,对于散射粒子的直径与波长在相近的范围内时尤为重要。使用MATLAB进行米氏散射的计算涉及特定的函数和数值方法。以下是实现米氏散射的步骤和方法概述:

1. 米氏散射理论概述

2. 使用MATLAB实现米氏散射计算

MATLAB有许多内置函数和工具箱(如MATLAB的光学工具箱),但即使在没有这些工具箱的情况下,也可以用代码来实现米氏散射。以下是处理米氏散射的一般步骤:

步骤1:定义参数

定义散射粒子尺寸参数、折射率、波长和观测角度。

 r = 1e-6; % 粒子半径 (单位:米)
 lambda = 500e-9; % 光的波长 (单位:米)
 m = 1.5 + 0.01i; % 粒子的复折射率
 ​
 % 计算尺寸参数
 x = 2 * pi * r / lambda;

步骤2:计算米氏系数

使用MATLAB实现米氏散射通常需要计算一系列散射系数a_nb_n,这些系数是通过贝塞尔函数来表达的。MATLAB有besseljbessely函数可以用于这些计算。

 % 计算米氏系数
 n_max = ceil(x + 4 * x^(1/3) + 2); % 用来确保收敛的最大阶数
 an = zeros(1, n_max);
 bn = zeros(1, n_max);
 ​
 for n = 1:n_max
     % 计算贝塞尔函数值
     psi_n = besselj(n, x); % 第一类贝塞尔函数
     xi_n = psi_n + 1i * bessely(n, x); % 复合的球贝塞尔函数

     % 米氏系数的表达式
     an(n) = ... % 需要根据 Mie 理论公式计算 a_n
     bn(n) = ... % 需要根据 Mie 理论公式计算 b_n
 end

步骤3:计算散射参数

使用米氏系数来计算散射截面和散射强度。

 % 散射截面计算
 C_scat = (2 * pi / k^2) * sum((2 * (1:n_max) + 1) .* (abs(an).^2 + abs(bn).^2));

3. 使用现成的MATLAB工具箱

如果你使用的是带有MATLAB光学工具箱的版本,可能会有预定义的函数用于散射计算,例如: