Double management
How to manage Scilab's variable read and write process using call_scilab and api_scilab
Description
This help describes how doubles and matrix of doubles can be handle through the Call Scilab API and api Scilab.
There are several functions which can be used to read / write from the memory of Scilab. These functions are described in dedicated pages.
Note that the default type of a numeric value in Scilab is double.
For example, in a=1 or a=[1,2],
a will be consider as a double. |
Note: Access to variables is done through api Scilab (named variable). |
Examples
/* * Write a matrix into Scilab * B=[1 4 2 3; * 3 9 8 2 ] * Note that it is done column by column */ double B[] = {1,3,4,9,2,8,3,2}; /* Declare the matrix */ int rowB = 2, colB = 4; /* Size of the matrix */ char variableNameB[] = "B"; SciErr sciErr; /* * Write it into Scilab's memory */ sciErr = createNamedMatrixOfDouble(pvApiCtx,variableNameB,rowB,colB, B); /* pvApiCtx is a global variable */ if(sciErr.iErr) { printError(&sciErr, 0); } /* * Prior to Scilab 5.2: * C2F(cwritemat)(variableNameB, &rowB, &colB, B, strlen(variableNameB)); */ printf("\n"); printf("Display from Scilab of B:\n"); SendScilabJob("disp(B);"); /* Display B */
/* Read the previously declared matrix of double B */ int rowB_ = 0, colB_ = 0, lp_ = 0; double *matrixOfDoubleB = NULL; int i = 0, j = 0; char variableToBeRetrievedB[] = "B"; SciErr sciErr; /* First, retrieve the size of the matrix */ sciErr = readNamedMatrixOfDouble(pvApiCtx, variableToBeRetrievedB, &rowB_, &colB_, NULL); if(sciErr.iErr) { printError(&sciErr, 0); } /* * Prior to Scilab 5.2: * C2F(cmatptr)(variableToBeRetrievedB, &rowB_, &colB_, &lp_, strlen(variableToBeRetrievedB)); */ /* Alloc the memory */ matrixOfDoubleB = (double*)malloc((rowB_*colB_)*sizeof(double)); /* Load the matrix */ sciErr = readNamedMatrixOfDouble(pvApiCtx, variableToBeRetrievedB, &rowB_, &colB_, matrixOfDoubleB); if(sciErr.iErr) { printError(&sciErr, 0); } /* * Prior to Scilab 5.2: * C2F(creadmat)(variableToBeRetrievedB,&rowB_,&colB_,matrixOfDoubleB,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 ",matrixOfDoubleB[i * rowB_ + j]); } printf("\n"); /* New row of the matrix */ }
See also
- Call_Scilab — call_scilabは, C/C++コードからScilabエンジンをコールする機能を提供する インターフェイスです.
- api Scilab — api_scilab はScilabメモリにデータを読み書きするための Scilabインターフェイスです
- API_Scilab: Double reading — ゲートウェイ内でdoubleの行列を読み込む方法.
- API_Scilab: Double writing — ゲートウェイでdoubleの行列を書き込む方法.
- SendScilabJob — Send a Scilab task from a C/C++ code (call_scilab)
- StartScilab — Initializes and starts Scilab engine in Call Scilab
- Call_Scilab: BooleanManagement — How to manage Scilab's boolean read and write process using call_scilab and api_scilab
- Call_Scilab: ComplexManagement — How to manage Scilab's complex variable read and write process using call_scilab
- Call_Scilab: StringManagement — How to manage Scilab's String read and write process using call_scilab and api_scilab
- API_Scilab: Boolean Reading — 論理値の行列を読み込む方法.
- API_Scilab: Boolean Writing — 論理値の行列を書き込む方法.
- API_Scilab: String Reading — ゲートウェイで文字列の行列を読み込む方法.
- API_Scilab: String Writing — ゲートウェイに文字列の行列を書き込む方法.
Report an issue | ||
<< DisableInteractiveMode | call_scilab API | fromc >> |