Complex management
How to manage Scilab's complex variable read and write process using call_scilab
Description
This help describes how doubles and matrix of complex can be handle through the Call Scilab API.
There are several functions which can be used to read / write from the memory of Scilab. These functions are described in dedicated pages.
Note: Access to variables is done through api Scilab (named variable). |
Examples
/* * Write a matrix into Scilab * B=[1+%i 4-%i 2+1/2*%i 3; * 3 9 8+42*%i 2 ] * Note that it is done column by column */ double B[]={1,3,4,9,2,8,3,2}; double B_img[]={1,0.233,-1,-0.2,0.5,42,-23,123}; /* Declare the matrix */ /* * Prior to Scilab 5.2: * double B[]={1,3,4,9,2,8,3,2,1,0.233,-1,-0.2,0.5,42,-23,123}; */ int rowB=2, colB=4; /* Size of the matrix */ char variableNameB[] = "B"; SciErr sciErr; /* Write it into Scilab's memory */ sciErr = createNamedComplexMatrixOfDouble(pvApiCtx,variableNameB,rowB,colB, B, B_img); if(sciErr.iErr) { printError(&sciErr, 0); } /* * Prior to Scilab 5.2: * 2F(cwritecmat)(variableNameB, &rowB, &colB, B, strlen(variableNameB)); */ printf("\n"); printf("Display from Scilab of B:\n"); SendScilabJob("disp(B);"); /* Display B */
int rowB_ = 0, colB_ = 0, lp_ = 0; int i = 0,j = 0; double *matrixOfComplexB = NULL; double *matrixOfComplexB_img = NULL; char variableToBeRetrievedB[] = "B"; SciErr sciErr; /* First, retrieve the size of the matrix */ readNamedComplexMatrixOfDouble(pvApiCtx, variableToBeRetrievedB, &rowB_, &colB_, NULL, NULL); if(sciErr.iErr) { printError(&sciErr, 0); } /* * Prior to Scilab 5.2: * C2F(cmatcptr)(variableToBeRetrievedB, &rowB_, &colB_, &lp_, strlen(variableToBeRetrievedB)); */ /* Alloc the memory */ matrixOfComplexB = (double*)malloc((rowB_*colB_)*sizeof(double)); matrixOfComplexB_img = (double*)malloc((rowB_*colB_)*sizeof(double)); /* Load the matrix */ sciErr = readNamedComplexMatrixOfDouble(pvApiCtx, variableToBeRetrievedB, &rowB_, &colB_, matrixOfComplexB, matrixOfComplexB_img); if(sciErr.iErr) { printError(&sciErr, 0); } /* * Prior to Scilab 5.2: * C2F(creadcmat)(variableToBeRetrievedB,&rowB_,&colB_,matrixOfComplexB,strlen(variableToBeRetrievedB) ); */ printf("\n"); printf("Display from B formatted (size: %d, %d):\n",rowB_, colB_); for(j = 0 ; j < rowB_ ; j++) { for(i = 0 ; i < colB_ ; i++) { /* Display the formatted matrix ... the way the user * expect */ printf("%5.2f + %5.2f.i ",matrixOfComplexB[i * rowB_ + j],matrixOfComplexB_img[i * rowB_ + j]); } printf("\n"); /* New row of the matrix */ }
See also
- Call_Scilab — call_scilab is an interface which provides the ability to call Scilab engine from C/C++ code
- api Scilab — api_scilab is the Scilab 6 interface to access Scilab variables.
- SendScilabJob — Send a Scilab task from a C/C++ code (call_scilab)
- StartScilab — Initializes and starts Scilab engine in Call Scilab
- Call_Scilab: Complex Management — How to manage Scilab's complex variable read and write process using call_scilab
- Call_Scilab: Boolean Management — How to manage Scilab's boolean read and write process using call_scilab and api_scilab
- Call_Scilab: String Management — How to manage Scilab's String read and write process using call_scilab and api_scilab
Report an issue | ||
<< Compile and run with Call Scilab | call_scilab API | DisableInteractiveMode >> |