2.2.3.9.45 matrixbase::MakeComplexMakeComplex
Description
Make a Complex matrix from two Real matrices.
Syntax
int MakeComplex( matrixbase & mbReal, matrixbase & mbImag )
Parameters
- mbReal
- [input] The matrix containing the Real part
- mbImag
- [input] The matrix containing the Imaginary part
Return
Returns 0 on success and -1 on failure.
Examples
EX1
// Make a complex matrix from teo matrices
void matrixbase_MakeComplex_ex1()
{
matrix<double> mR = {
{2, 2, 2, 0},
{0, 1, 99, 99}
};
mR[1][2]=NANUM; mR[1][3]=NANUM;
matrix<double> mI = {
{3, -3, 0, 3},
{0, 99, 1, 99}
};
mI[1][1]=NANUM; mI[1][3]=NANUM;
matrix<complex> mC;
// Input matrix is:
// {2, 2, 2, 0}
// {0, 1, --, --}
// and
// {3, -3, 0, 3}
// {0, --, 1, --}
// Result matrix is:
// {2+3i, 2-3i, 2, 3i}
// {0, --, --, --}
MatrixPage MatPg1;
MatPg1.Create("Origin");
MatrixLayer MatLy1 = MatPg1.Layers(0);
Matrix<double> Mat1(MatLy1);
Mat1 = mR;
printf(" Input matrix for the real part is %s.\n",Mat1.GetName());
MatrixPage MatPg2;
MatPg2.Create("Origin");
MatrixLayer MatLy2 = MatPg2.Layers(0);
Matrix<double> Mat2(MatLy2);
Mat2 = mI;
printf(" Input matrix for the imaginary part is %s.\n",Mat2.GetName());
MatrixPage MatPg3;
MatPg3.Create("Origin");
MatrixLayer MatLy3 = MatPg3.Layers(0);
MatLy3.SetInternalData(FSI_COMPLEX); // Set the internal data type to complex
Matrix<complex> Mat3(MatLy3);
int rc=mC.MakeComplex(mR,mI); //Create a complex matrix mC from mR and mI
if(rc!=0)
printf(" Error: MakeComplex failed.\n");
else {
Mat3 = mC;
printf(" Created complex matrix is %s.\n",Mat3.GetName());
printf(" Observe that if either the real or imaginary input is a NANUM, the result is also a NANUM.\n");
}
}
Remark
Make a Complex matrix from two Real matrices (which must have the same dimensions).
See Also
matrixbase::CastToInteger, matrixbase::CastToDouble, matrixbase::GetReal, matrixbase::GetImaginary, matrixbase::GetPhase, matrixbase::GetAmplitude, matrixbase::Conjugate, matrixbase::Cross, matrixbase::Inverse
Header to Include
origin.h
|