The Starproduct

The Starproduct between two S-matrices is defined as follows:

\[\begin{split}\left( \begin{array}{cc} r_1 &u_1\\ w_1 & s_1 \\ \end{array}\right) \star \left( \begin{array}{cc} r_2 &u_2\\ w_2 & s_2 \\ \end{array}\right) = \left( \begin{array}{cc} r_2(1-u_1 w_2)^{-1}r_1 &u_2 + r_2 u_1 (a-w_2 u_1)^{-1}s_2\\ w_1 + s_1 w_2 (1- u_1 w_2)^{-1} r_1 & s_1 (1-w_2 \cdot u_1)^{-1}s_2 \\ \end{array}\right)\end{split}\]

. The following functions just apply this definition once analytically and once by usage of a geometric matrix series. Thats possible, because

\[(1-u_1 w_2)^{-1}\]

could be easily written down in a series.

star_product.star_product_analyt(SIN_1, SIN_2)

Calculate Lifeng Li’s starproduct for two S-matrices SIN_1 and SIN_2, such that S = S1 * S2. The starproduct between two arbitrary S-matrices was precalculated analytically with Mathematica.

Parameters:
  • SIN_1 (HxLx4x4 numpy array) – H is height_vec_len, the dimension of the height vector given to the layer object. (Most of the time equal to 1) L is wav_vec_len the number of measured wavelengths
  • SIN_2 (HxLx4x4 numpy array) – H is height_vec_len, the dimension of the height vector given to the layer object. (Most of the time equal to 1) L is wav_vec_len the number of measured wavelengths
Returns:

s_out

Return type:

HxLx4x4 numpy array

star_product.star_product_cascaded(smat_list)

Iteratively calculates the starproduct (Li, 1996) of N S-matrices, where N >= 2. The iteration goes the through the starproduct pair-wise, so that: S = ((((((S1 * S2) * S3) * S4) * … ) * Sn-1) * Sn).

Parameters:smat_list (list) – A list containing N HxLx4x4 S-matrices
Returns:smat
Return type:HxLx4x4 numpy array
star_product.star_product_cascaded_geo(smat_list, order)

A version of star_product_cascaded unsing star_product_geometric.

Parameters:
  • smat_list (list) – A list containing N HxLx4x4 S-matrices
  • order (int) –
Returns:

smat

Return type:

An L-by-4-by-4 S-matrix.

star_product.star_product_geometric(SIN_1, SIN_2, order)

A version of star_product where the [I - a @ b]**-1 term is developed as a geometric series to the nth order.

Parameters:
  • SIN_1 (HxLx4x4 numpy array) – H is height_vec_len, the dimension of the height vector given to the layer object. (Most of the time equal to 1) L is wav_vec_len the number of measured wavelengths
  • SIN_2 (HxLx4x4 numpy array) – H is height_vec_len, the dimension of the height vector given to the layer object. (Most of the time equal to 1) L is wav_vec_len the number of measured wavelengths
  • order (int) –
Returns:

s_out

Return type:

HxLx4x4 numpy array