Scilab 6.0.2
Please note that the recommended version of Scilab is 2025.0.0. This page might be outdated.
However, this page did not exist in the previous stable version.
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 interface to read/write data from/to Scilab memory
- 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
- API_Scilab: Boolean Reading — How to read matrix of boolean.
- API_Scilab: Boolean Writing — How to write matrices of boolean.
- API_Scilab: String Reading — How to read matrices of strings in a gateway.
- API_Scilab: String Writing — How to write matrices of string in a gateway.
Report an issue | ||
<< Compile and run with Call Scilab | API call_scilab (moteur Scilab) | DisableInteractiveMode >> |