The symmetric decomposition of a 4x4 Mueller matrix can be performed using the algorithm proposed by Chipman in 2007. Here is a MATLAB implementation of the algorithm:
function [S,D] = symmetric_decomposition(M)
% SYMMETRIC_DECOMPOSITION performs the symmetric decomposition of a 4x4
% Mueller matrix.
%
% [S,D] = SYMMETRIC_DECOMPOSITION(M) returns the symmetric part (S) and
% diagonal part (D) of the 4x4 Mueller matrix M.
%
% Reference:
% Chipman, R.A. (2007). Symmetric interpretation of Mueller matrices.
% Journal of the Optical Society of America A, 24(9), 1314-1319.
%
% Author: Diego Marcos
% Date: 11/04/2023
% Check input arguments
if nargin ~= 1
error('One input argument is required.')
end
if ~isequal(size(M),[4 4])
error('Input argument must be a 4x4 matrix.')
end
% Calculate the symmetric and antisymmetric parts of M
S = 0.5 * (M + M.');
A = 0.5 * (M - M.');
% Calculate the diagonal part of S
D = diag([1 1 S(3,3)/S(1,1) S(4,4)/S(2,2)]);
% Calculate the remaining elements of S
S(3,1) = S(1,3) = D(3,3)*S(1,1);
S(4,2) = S(2,4) = D(4,4)*S(2,2);
S(3,2) = S(2,3) = S(3,4) = S(4,3) = 0;
% Reconstruct M from S and A
M = S + A;
end
You can call this function by passing a 4x4 Mueller matrix as input:
M = [1 0 0 0;
0 0 1 0;
0 1 0 0;
0 0 0 -1];
[S,D] = symmetric_decomposition(M);
This will return the symmetric part (S) and diagonal part (D) of the Mueller matrix.
Chakit Arora Thank You for your response. Can you plz provide the source code link or the github repository, so that I study it further and to extract the depolarization and retardances from them.
Zain Ul Abidin just copy paste this function below into a matlab 'new script' and save it as a file 'symmetric_decomposition.m' (the name SHOULD be same as the function name), then you can call it in any other script (also check this https://it.mathworks.com/matlabcentral/answers/415916-how-can-i-save-functions-or-sub-functions-in-matlab) -
function [S,D] = symmetric_decomposition(M)
% SYMMETRIC_DECOMPOSITION performs the symmetric decomposition of a 4x4
% Mueller matrix.
%
% [S,D] = SYMMETRIC_DECOMPOSITION(M) returns the symmetric part (S) and
% diagonal part (D) of the 4x4 Mueller matrix M.
%
% Reference:
% Chipman, R.A. (2007). Symmetric interpretation of Mueller matrices.
% Journal of the Optical Society of America A, 24(9), 1314-1319.
%
% Author: Diego Marcos
% Date: 11/04/2023
% Check input arguments
if nargin ~= 1
error('One input argument is required.')
end
if ~isequal(size(M),[4 4])
error('Input argument must be a 4x4 matrix.')
end
% Calculate the symmetric and antisymmetric parts of M