Get the Imaginary part of a Complex matrix.
BOOL GetImaginary( matrix & mImag )
Returns TRUE on successful exit and FALSE on failure.
EX1
void matrixbase_GetImaginary_ex1() { matrix<complex> mComplex = {1+2i, 3+4i, 6i, 0, 99}; mComplex[0][4]=NANUM; matrix mImag; int rc = mComplex.GetImaginary(mImag); if(!rc) printf("Error: GetImaginary failed. rc=%d\n", rc); else{ printf("The GetImaginary matrix is:\n"); for(int ii=0; ii< mImag.GetNumRows(); ii++){ for(int jj=0; jj< mImag.GetNumCols(); jj++) printf("%g ", mImag[ii][jj]); printf("\r\n"); } } }
EX2
// Apply GetReal and GetImaginary functions to the complex cell values of a matrix void matrixbase_GetImaginary_ex2() { matrix<complex> mComplex = {1+2i, 3+4i, 6i, 0, 99}; mComplex[0][4]=NANUM; // Input matrix is: // {1+2i, 3+4i, 6i, 0, --} // Output real matrix is: // {1, 3, 0, 0, --} // Output imaginary matrix is: // {2, 4, 6, 0, 0} matrix mReal1, mImag1; PageBase pgbase; MatrixPage MatPg1; MatPg1.Create("Origin"); MatrixLayer MatLy1 = MatPg1.Layers(0); MatLy1.SetInternalData(FSI_COMPLEX); // Set the internal data type to complex Matrix<complex> Mat1(MatLy1); pgbase = Project.Pages(); // Get the active page pgbase.Rename("Original"); Mat1 = mComplex; printf(" Original matrix is %s.\n",Mat1.GetName()); printf("\n"); MatrixPage MatPg2; MatPg2.Create("Origin"); MatrixLayer MatLy2 = MatPg2.Layers(0); Matrix Mat2(MatLy2); pgbase = Project.Pages(); // Get the active page pgbase.Rename("Real"); int rc=mComplex.GetReal( mReal1 ); // mReal1 = {1,3,0,0,--}; if(!rc) printf(" Error: GetReal failed.\n"); else { Mat2 = mReal1; printf(" Extracted matrix by GetReal is %s.\n",Mat2.GetName()); printf(" Observe that the result value of GetReal on NANUM is NANUM.\n"); } printf("\n"); MatrixPage MatPg3; MatPg3.Create("Origin"); MatrixLayer MatLy3 = MatPg3.Layers(0); Matrix Mat3(MatLy3); pgbase = Project.Pages(); // Get the active page pgbase.Rename("Imaginary"); rc=mComplex.GetImaginary( mImag1 ); // mImag1 = {2,4,6,0,0}; if(!rc) printf(" Error: GetImaginary failed.\n"); else { Mat3 = mImag1; printf(" Extracted matrix by GetImaginary is %s.\n",Mat3.GetName()); printf(" Observe that each result value is a real number.\n"); printf(" Observe that the result value of GetImaginary on NANUM is 0.\n"); } }
Get the Imaginary part of a Complex matrix. Causes a runtime error if the underlying base type of the matrix is not Complex.
MatrixLayer::SetInternalData, matrixbase::GetReal, matrixbase::GetPhase, matrixbase::GetAmplitude, matrixbase::Conjugate, matrixbase::Cross, matrixbase::Inverse, matrixbase::MakeComplex
origin.h