public static double[] DGD(string j1, string j2, double w1, double w2) { double[] jValues1 = JonesString2Double(j1); double[] jValues2 = JonesString2Double(j2); JonesMatPol mat1 = JonesDoubleArray2JonesMat(jValues1); JonesMatPol mat2 = JonesDoubleArray2JonesMat(jValues2); JonesMatCar J1 = CMath.Pol2Car(mat1); JonesMatCar J2 = CMath.Pol2Car(mat2); JonesMatCar J1Inv = CMath.Inverse(J1); JonesMatCar J2_J1Inv = J2 * J1Inv; ComplexCar[] complexCars = CMath.Eigenvalues(J2_J1Inv); ComplexPol[] complexPols = new ComplexPol[2]; complexPols[0] = CMath.Car2Pol(complexCars[0]); complexPols[1] = CMath.Car2Pol(complexCars[1]); double Ang = complexPols[0].ang - complexPols[1].ang; double f1 = Wavelength2Frequency(w1); double f2 = Wavelength2Frequency(w2); double[] DGD_W = { CMath.Abs(Ang / (f1 - f2)), (w1 + w2) / 2 }; return(DGD_W); }
public static JonesMatCar Pol2Car(JonesMatPol jonesMatPol) { JonesMatCar jonesMatCar; jonesMatCar.J11 = Pol2Car(jonesMatPol.J11); jonesMatCar.J12 = Pol2Car(jonesMatPol.J12); jonesMatCar.J21 = Pol2Car(jonesMatPol.J21); jonesMatCar.J22 = Pol2Car(jonesMatPol.J22); return(jonesMatCar); }
public static void Print(JonesMatPol mat) { Print(mat.J11); Console.Write(" "); Print(mat.J12); Console.WriteLine(); Print(mat.J21); Console.Write(" "); Print(mat.J22); Console.WriteLine(); }